Чтение полной строки ввода
Я пытаюсь сохранить вход, который вводит пользователь через консоль. поэтому мне нужно включить "enter" и любое свободное пространство.
Но cin
перестает давать мне ввод после первого пробела.
Есть ли способ прочитать целые строки до нажатия CTRL + Z или что-то еще?
Ответы
Ответ 1
есть ли способ readLines до нажатия CTRL + Z или что-то??
Да, именно так, используя бесплатную std::getline
функцию (а не метод istream
с тем же именем!):
string line;
while (getline(cin, line)) {
// do something with the line
}
Это будет читать строки (включая пробелы, но без окончания новой строки) с входа до тех пор, пока не будет достигнут конец ввода, или cin
не сообщит об ошибке.
Ответ 2
#include <iostream>
#include <string>
using namespace std;
int main()
string s;
while( getline( cin, s ) ) {
// do something with s
}
}
Ответ 3
Для моей программы я написал следующий бит кода, который читает каждый отдельный символ ввода до нажатия ctrl + x. Здесь код:
char a;
string b;
while (a != 24)
{
cin.get(a);
b=b+a;
}
cout << b;
Для Ctrl + z введите следующее:
char a;
string b;
while (a != 26)
{
cin.get(a);
b=b+a;
}
cout << b;
Я не могу подтвердить, что решение ctr + z работает, поскольку я на компьютере UNIX, а ctrl + z убивает программу. Однако он может работать или не работать для окон; Вы должны были убедиться сами.
Ответ 4
Вы можете использовать функцию getline в С++
#include<iostream>
using namespace std;
int main()
{
char msg[100];
cin.getline(msg,100);
return 0;
}
Ответ 5
#include <string>
#include <iostream>
int main()
{
std::cout << "enter your name: ";
std::string name;
std::getline(std::cin, name);
return 0;
}