这是我的基本模仿程序的代码,只需复制用户输入的内容:
#include <iostream>
using namespace std;
#include <string>
int main()
{
cout << "type something.. I dare you..." << endl;
for (;;)
{
string usrin;
cout << "You: ";
cin >> usrin;
cout << "Me: " << usrin;
}
return 0;
}
但是当用户输入多个单词时,我得到了这个:
我:更多
你:比
你:我:一个
你:我:字
您:
任何和所有帮助表示赞赏!谢谢!
答案 0 :(得分:4)
您需要使用cin.getline(usrin)
代替cin >> usrin
。
cin >> usrin
在流中找到空格字符时会停止读取,但会在下次使用cin
时留下其余的流。
cin.getline
将一直读到行尾。但是,您需要将usrin
更改为char
的数组。
char usrln[MAX_LINE_LENGTH];
其中MAX_LINE_LENGTH是一个常数,它大于您希望看到的最长行的长度。
答案 1 :(得分:0)
在每次输入之后,\n
在输入缓冲区中留下并在下一次迭代时读取。您需要刷新输入缓冲区。使用
cin.ignore(MAX_INT, '\n'); //Ignores to the end of line
添加<limits.h>
标头。
#include <iostream>
#include <limits.h>
#include <string>
using namespace std;
int main()
{
cout << "type something.. I dare you..." << endl;
for (;;)
{
string usrin;
cout << "You: ";
cin >> usrin;
cout << "Me: " << usrin ;//<<endl;
cin.ignore(INT_MAX, '\n');
}
return 0;
}