Вот мой код для базовой программы 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;
}
Но когда пользователь вводит более одного слова, я получаю это:
Мне больше
Вы: чем
Вы: Я: один
Вы: Я: слово
Вы:
любая помощь приветствуется! благодарю вас!
Вам нужно использовать 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;
}