上面的代码可以简化吗,为什么会返回std::string::npos,是自己返回的吗
时间: 2024-04-16 08:28:23 浏览: 108
C string深入详解2.0版_C++_string_
是的,上面的代码可以进行简化。`std::string::find`函数在找不到子字符串时,会返回`std::string::npos`。`std::string::npos`是一个静态常量,它的值是一个特殊的标记,表示找不到子字符串。
下面是简化后的代码示例:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::string substr = "World";
if (str.find(substr) != std::string::npos) {
std::cout << "Substring found." << std::endl;
} else {
std::cout << "Substring not found." << std::endl;
}
return 0;
}
```
在上面的示例中,我们可以直接在条件语句中使用`std::string::find`和`std::string::npos`来判断子字符串是否存在。如果返回的位置不等于`std::string::npos`,则表示找到了子字符串;如果返回的位置等于`std::string::npos`,则表示找不到子字符串。
需要注意的是,为了使用`std::string`类和其成员函数,需要包含`<string>`头文件。
阅读全文