Как читать символы из консоли в C ++? - PullRequest
2 голосов
/ 01 апреля 2010

Я борюсь с чтением символов из консоли в C ++. Вот что я пытался сделать:

char x;
char y; 
char z;

cout<<"Please enter your string: ";
string s;
getline(cin,s);
istringstream is(s);

is>> x >> y >> z;

Проблема в том, что пользователь вводит что-то вроде этого "1 20 100":

x will get 1
y will get 2
z will get 0

То, что я хочу получить, это х = 1; у = 20; z = 100;

У кого-нибудь есть предложения?

Ответы [ 4 ]

3 голосов
/ 01 апреля 2010

Вы не хотите читать символы, но целые числа.

int x;
int y; 
int z;

cout<<"Please enter your string: ";
string s;
getline(cin,s);
istringstream is(s);

is>> x >> y >> z;
1 голос
/ 01 апреля 2010

Причина, по которой вы получаете эти результаты, заключается в том, что, поскольку x, y и z являются символами, при использовании istringstream он читает первый символ в x, он пропускает пробел и читает символ '2' в y и следующий символ это «0», и это входит в Z.

char x, y, z;
cout << "Please enter three integers: ";
cin >> x >> y >> z;

Если это не сработает, просто используйте int, потому что попытка найти обходной путь для использования символов вместо int для экономии памяти беспокоит не ту вещь.

1 голос
/ 01 апреля 2010

Звучит так, будто вы хотите читать целыми числами. Вы могли бы сделать:

int x, y, z;

cout << "Please enter three integers: ";
cin >> x >> y >> z;
1 голос
/ 01 апреля 2010

Ты почти у цели. operator>>() - форматированный оператор извлечения. Измените переменные с типа char на тип int и все готово.

...