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

标签 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 作为长度。

我做错了什么?

最佳答案

那是因为 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;
    }
}

关于c++ - string.length() 在第一个单词后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26857128/

相关文章:

c++ - 从文件中读取十六进制,printf %x 显示前导 ff 值

将长绳子剪成短绳子

c++ - 如何使用 cin 测试空行

c++ - 从 QTest 模拟点击的 QML 元素

c++ - 发布版本中是否禁用断言?

c - 这两种在C中获取字符串输入的方法有什么区别?

python - max() 函数如何处理 python 中的字符串列表?

c++ - 数组在 C++ 中自动填充自身

c++ - 为什么 std::cin 不提示用户输入?

c++ - std::string::erase 导致内存损坏