【发布时间】:2016-02-24 10:47:02
【问题描述】:
我正在尝试使用 find() 在另一个字符串中查找子字符串的索引,但如果子字符串不存在,则会得到一个垃圾值而不是 std::npos。
这是代码:
字符串输出1 = "abcd";
cout
这是输出:
18446744073709551615
可以防止这种行为吗?还有其他方法可以找到子字符串吗?
(其实我只需要找到if子串是否包含)
谢谢
【问题讨论】:
标签: c++ eclipse string find std
我正在尝试使用 find() 在另一个字符串中查找子字符串的索引,但如果子字符串不存在,则会得到一个垃圾值而不是 std::npos。
这是代码:
字符串输出1 = "abcd";
cout
这是输出:
18446744073709551615
可以防止这种行为吗?还有其他方法可以找到子字符串吗?
(其实我只需要找到if子串是否包含)
谢谢
【问题讨论】:
标签: c++ eclipse string find std
它返回的是字符串的 npos 的size_t,因为它找不到您的字符或文本。你可以这样做:
std::size_t found = str.find("findme");
if (found != std::string::npos)
std:cout << found << std::endl;
else
std::cout << "String not found" << std::endl // If not found
【讨论】:
std::cout打印它时,它会像你说的那样显示垃圾。如果要正确打印,请使用printf("%Iu", npos) (msvc) 或printf("%zu", npos) for gcc
if 内没有做任何事情。如果要添加未找到的输出,可以添加 else