修复了copycat程序中的间距

时间:2014-06-19 08:23:44

标签: c++ copy spacing

这是我的基本模仿程序的代码,只需复制用户输入的内容:

#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;
}

但是当用户输入多个单词时,我得到了这个:

  

我:更多

     

你:比

     

你:我:一个

     

你:我:字

     

您:

任何和所有帮助表示赞赏!谢谢!

2 个答案:

答案 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;
}