use*_*183 4 c++ string language-lawyer
以下代码片段在我的编译器(visual studio)上始终返回true.但这种行为是否定义良好且可移植?
bool return_always_true(std::string const& str)
{
return str.find("") != std::string::npos;
}
int main(){
cout << boolapha << return_always_true("") << endl
<< return_always_true("oxylottl") << endl
<< return_always_true("lorem ipsum") << endl;
//true true true
}
Run Code Online (Sandbox Code Playgroud)
我发现cppreference.com比标准更容易阅读.引用它们:
找到第一个等于
str......的子串形式上,如果满足以下所有条件,
str则称子块位于位置xpos:
xpos >= posxpos + str.size() <= size()- 所有职位
n中str,Traits::eq(at(xpos+n), str.at(n))
空字符串将始终在目标字符串的开头匹配,因为
str所以匹配条件是真空的.