我怎么能用一个整数然后一个字符串"用空格" 这是我的代码
int x;string s;
cout<<"Enter Integer"<<endl;
cin>>x;
cout<<"Enter the string with spaces"<<endl;
//if i used cin>>s here then it will not read all the text because it has spaces
// is i used getline(cin,s); then it will not read any thing
答案 0 :(得分:0)
您可能遇到的问题是cin >> x
只读取 您键入的数字的数字,而不是以下换行符。然后,当您执行cin >> s
读取字符串时,输入处理器将看到换行符并仅返回空字符串。
解决方案是使用一个旨在读取整行输入的函数,例如std::getline
。不要使用提取运算符>>
进行交互式输入。
答案 1 :(得分:0)
读取带空格use std::getline
的字符串。
注意>>
碰到分隔符时会发生什么。它停止并离开流中的分隔符。只要您使用>>
,因为>>
将丢弃所有空格,这不是问题。 std::getline
将捕获该空白,并且常见的用例是
user types in number and hits enter
user types in string and hits enter
那会发生什么? >>
提取数字并在它到达空格时停止。这样就可以通过按流中的Enter键将行尾放入流中。 std::getline
出现了,它看到的第一件事是......行尾。 std::getline
存储一个空字符串并立即返回。现在程序处理一个空字符串,用户仍然希望键入一个字符串,输入一个将来读取的字符串,可能会将输入流放入错误的情况下,当然会给用户一个惊喜。
一个常见的解决方案是to use ignore(numeric_limits<streamsize>::max(), '\n');
,在提示用户输入并调用std::getline
之前,使用流中直到并包括行尾的所有数据。