这是我目前正在浏览的一段C ++代码,但我以前从未见过它。有人能告诉我这是什么意思吗?如果找到searchText,它只是将bool设置为true吗?
size_t startPos = searchString.find("searchText");
bool found = startPos != std::string::npos;
答案 0 :(得分:7)
std::string::find()
返回给定字符串中搜索到的子字符串的位置,如果找不到子字符串,则返回std::string::npos
(常量)。
如果以这样的方式编写代码,也许你会更好地阅读代码:
size_t startPos = searchString.find("searchText");
// In the next line, '(' and ')' are not mandatory, but make this easier to read.
bool found = (startPos != std::string::npos);
也就是说,如果startPos
与std::string::npos
不同,则会找到子字符串。
答案 1 :(得分:1)
是。 std::string::npos只是“最大可能”的价值。如果不是startpos
,则必须找到搜索字符串。
答案 2 :(得分:0)
是的,这正是它的作用。 std::string::npos
是一个静态成员常量值,对于size_t类型的元素具有最大可能值。如果string::find
找不到给定的文本模式,则返回该值。
答案 3 :(得分:0)
string::npos
将返回string::find
。
答案 4 :(得分:0)
请参阅http://www.cplusplus.com/reference/string/string/npos/
此常量实际上定义为值-1(对于任何特征),因为size_t是无符号整数类型,因此成为此类型的最大可表示值。
这实际上搜索searchString中的子字符串,如果找不到则将found设置为false,如果子字符串存在则将其设置为true。
答案 5 :(得分:0)
此代码段有两个步骤:
第一行检查变量searchText
中是否找到字符串searchString
(我假设它是std :: string类型)。如果找到该字符串,方法find()
将返回找到该字符串的位置,否则它将返回std::string::npos
。 find()
方法的结果存储在startPos
。
布尔变量found
是根据步骤#1中找到的字符串初始化的。如果写成:
bool found = (startPos != std::string::npos);
。
请注意,std::string::npos
是一个定义为-1
的命名常量,它是size_t
(所有0xFF
s)的最大可能值。
答案 6 :(得分:-1)
这是windows.h
库中的一个函数。