c++ - 为什么 std::string 不能在用户输入中占用空格?

标签 c++ string tokenize spaces

直奔问题:

这段代码,

#include <iostream>
using namespace std;

int main() {
    std::string string = "9 9";
    std::cout << string;
    return 0;
}

返回 9 9 作为输出。

然而,当输入 9 9 到这个代码时,

#include <iostream>
using namespace std;

int main() {
    std::string string;
    std::cin >> string;
    std::cout << string;
    return 0;
}

它输出 9。为什么会这样?

我想这与空间有关,但是有什么办法可以避免这种情况吗?我必须说空格是数字之间唯一有效的分隔符。

最佳答案

std::cin一次一个字。要使用整条线,您需要使用 getline()功能。

用法: std::getline (std::cin,name);

你的情况:这应该在你 include <string> 时起作用:

#include <iostream>
#include <string>

int main() {
    std::string MyString;
    std::getline (std::cin, MyString);
    std::cout << MyString;
    return 0;
}

建议:你永远不要使用 using namespace std;了。此外,使用正确的变量名称。

关于c++ - 为什么 std::string 不能在用户输入中占用空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927917/

相关文章:

c++ - 编译时基类指针偏移到派生类

jquery - 查找多个类中包含类名

c - [C]-将字符串拆分为 2 个字符串

c - C 中的字符串和 strcpy

python - 在 python 3 中通过使用算术和逻辑运算符保留某些单词来标记单词?

c++ - C/C++ 函数/方法中大括号的缩进

C++ "Floating Point Enum"

c++ - (C++)如何在Window程序中使用虚函数?

java - lucene:使 StandardTokenizer 适应 Twitter 数据

c - 按子字符串拆分字符串