gpt4 book ai didi

c++ - 带空格的 Cin 和 ","

转载 作者:行者123 更新时间:2023-11-28 04:47:27 25 4
gpt4 key购买 nike

我想弄清楚如何将用户输入的带有空格的字符串作为单个字符串。此外,在此之后,用户将包括其他用逗号分隔的字符串

例如,foo,Hello World,foofoo 其中 foo 是一个 string 后跟 Hello Worldfoofoo.

我现在所拥有的是,它将 Hello World 拆分为两个 strings,而不是将它们合并为一个。

int main()
{
string stringOne, stringTwo, stringThree;
cout << "Enter a string with commas and a space";
cin >> stringOne; //User would enter in, for this example foo,Hello World,foofoo

istringstream str(stringOne);

getline(str, stringOne, ',');
getline(str, stringTwo, ',');
getline(str, stringThree);

cout << stringOne; //foo
cout << endl;
cout << stringTwo; //Hello World <---should be like this, but I am only getting Hello here
cout << endl;
cout << stringThree; //foofoo
cout << endl;
}

如何将 Hello World 作为单个字符串而不是两个字符串放入 stringTwo 中。

最佳答案

您的输入是:

foo,Hello World,foofoo

std::cin 读取输入的第一行是:

cin >> stringOne;

该行读取所有内容,直到找到 stringOne 的第一个空白字符。在该行之后,strinOne 的值将是 "foo,Hello"

行内

getline(str, stringOne, ',');       
getline(str, stringTwo, ',');

"foo" 被分配给 stringOne"Hello" 被分配给 stringTwo

行内

getline(str, stringThree);

没有任何内容分配给 stringThree,因为 str 对象中没有任何其他内容。

您可以通过更改从 std::cin 读取的第一行来解决此问题,以便将整行分配给 stringOne,而不是直到第一个空白字符。

getline(cin, stringOne);

istringstream str(stringOne);

getline(str, stringOne, ',');
getline(str, stringTwo, ',');
getline(str, stringThree);

关于c++ - 带空格的 Cin 和 ",",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com