修复了山寨程序中的空格

Fix spacing in copycat program

本文关键字:空格 程序      更新时间:2023-10-16

这是一个基本的复制程序的代码,它只是复制用户输入的任何内容:

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

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

我:更多比

你:

You: Me: one

You: Me: word

:

任何和所有的帮助是感激!谢谢你!

您需要使用cin.getline(usrin)而不是cin >> usrin

cin >> usrin在流中发现空白字符时停止读取,但在下次使用cin时将流的其余部分留下。

cin.getline将读取到行尾。但是,您需要将usrin更改为char的数组。

char usrln[MAX_LINE_LENGTH];

,其中MAX_LINE_LENGTH是一个常量,大于您期望看到的最长行的长度。

每次输入后,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;
}