string.length()在第一个单词后停止

时间:2014-11-11 03:47:49

标签: c++ string cin

我正试图找出一个字符串的长度。这有效并输出14

#include <iostream>
#include <string>
using namespace std;

int main(){
     string str = "this is sparta";
     cout << str.length() << endl;
}

然而这失败了:

#include <iostream>
#include <string>
using namespace std;

int main(){
     string str;
     cin >> str;
     cout << str.length() << endl;
}

当我输入句子this is sparta并点击返回时,我将4作为长度。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

那是因为cin在空白处停止了。如果你想阅读所有的单词,你需要循环:

int main() {
    string str;
    while (cin >> str) {
        cout << str << " --> " << str.length() << endl;
    }
}

或者,如果您想要同时使用它们,则需要使用getline

int main() {
    string str;
    while (getline(cin, str)) {
        cout << str << " --> " << str.length() << endl;
    }
}