Em đọc lệnh mà k hiểu. Mọi người có thể giải thích cho e lệnh này đc k ạ.
bool isPunc(char c) {
return delim.find(c) != std::string::npos;
}
Em đọc lệnh mà k hiểu. Mọi người có thể giải thích cho e lệnh này đc k ạ.
bool isPunc(char c) {
return delim.find(c) != std::string::npos;
}
Tham khảo:
http://www.cplusplus.com/reference/string/string/npos/
http://www.cplusplus.com/reference/string/string/find/
giá trị npos
giống như là null ấy. delim.find(c)
nếu ko tìm thấy c
trong delim
thì cũng phải trả về 1 giá trị size_t
nào đó (bình thường nếu tìm thấy c
trong delim
thì giá trị này là vị trí của c
trong delim
), nên ở đây phải tạo 1 giá trị “ma” là npos
tượng trưng cho vị trí của c
trong delim
khi c
ko có trong delim
ví dụ
“ccc”.find(‘c’) trả về 0 là vị trí ký tự ‘c’ đầu tiên
“abc”.find(‘c’) trả về 2
“aaa”.find(‘c’) trả về npos
vì ko tìm thấy ‘c’ trong “aaa”
thông thường giá trị npos
này là size_t(-1)
= 264 - 1 nếu là chương trình 64-bit. Nếu 32-bit thì có thể là 232 - 1. Chọn giá trị này vì lỡ chuỗi có dài 232 - 1 ký tự cũng ko thể trả về vị trí 232 - 1 vì đây là vị trí cuối cùng của ký tự trong chuỗi dài 232 ký tự :V Mà con trỏ 32-bit chỉ có thể chứa tới giá trị 232 - 1 nên ko có vụ chuỗi dài 232 ký tự, vậy nếu giá trị trả về là 232 - 1 thì tức là c
ko nằm trong delim
đó.