Исправить интервал в программе copycat

Вот мой код для базовой программы copycat, которая просто копирует все, что пользователь вводит:

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

Но когда пользователь вводит более одного слова, я получаю это:

Мне больше

Вы: чем

Вы: Я: один

Вы: Я: слово

Вы:

любая помощь приветствуется! благодарю вас!

3

Решение

Вам нужно использовать cin.getline(usrin) вместо cin >> usrin,

cin >> usrin прекращает чтение, когда обнаруживает пробельные символы в потоке, но оставляет остаток потока в следующий раз cin используется.

cin.getline будет читать до конца строки. Тем не менее, вам нужно будет изменить usrin к массиву char,

char usrln[MAX_LINE_LENGTH];

где MAX_LINE_LENGTH — это константа, которая больше, чем длина самой длинной строки, которую вы ожидаете увидеть.

4

Другие решения

После каждого ввода \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;
}
0

По вопросам рекламы [email protected]