string.find(" ")无法找到空格

5

我在尝试找到用户输入的字符串中的空格。我想使用std::stringfind()方法返回空格的位置。

如果用户输入的是"Seattle, WA USA",而我希望find(" ", 0)返回8,我该如何做?这里的第8个字符是","后面的空格。

string inputString = " ";
cout << "Enter String to modify" << endl;
cin >> inputString;
int spac = inputString.find(" " , 0);

但是find()返回的一直是0,我不确定为什么。

2
请注意,0 表示第一个字符,而不表示查找失败:std::string::npos 表示未找到。 - hmjd
2个回答

10

你没有读取空格 (cin >> inputString 在遇到空格时停止读入...).

改用 std::getline(std::cin, inputString)


谢谢,那么这个 "getline" 是做什么用的? - user1907700
@SndLt,请查看参考页面:http://en.cppreference.com/w/cpp/string/basic_string/getline - hmjd

1
这是因为 cin 会在第一个空格后截断单词并将其存储到 inputString 中:
string inputString;

getline(cin, inputString);

int spac = inputString.find(" " , 0);

cout << spac << endl;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接