2013-12-20 4 views
0

новичок Major здесь, как я могу петлю через каждый символ в ввода пользователя с помощью:Перебор каждого символа на входе пользователя

get(char& c) 

Я хотел бы использовать его в петлю, чтобы сделать что-то с каждым (включая пробелы), но я не могу заставить его работать в данный момент.

Если вы можете это сделать, предоставьте пример кода.

Благодаря

Вот что я прямо сейчас:

for (char& c : cin.get(char& c)) { 
    cout << c; 
} 
+1

Можете ли вы показать, что вы пробовали до сих пор, и мы можем помочь вам решить вашу проблему (ы)? – newfurniturey

+1

Вы можете просто перебирать строку 'std :: string'. Оператор '[]' должен указывать символы в каждом индексе. – Mahesh

+1

Нет Мне нужно использовать get. Ошибка – user2891805

ответ

3

Лично я бы написал это так:

std::string s; 
while(std::getline(std::cin, s)) { 
    for(char c : s) { 
     std::cout << c; 
    } 
} 

Хотя не забудьте указать разделитель '\ n', если вы хотите его сохранить. Обратите внимание, что, если вы не включите буферизацию терминала (нестандартную), вы будете получать входные данные только по очереди.

Примечание. Вы можете закончить цикл, сигнализируя о конце файла. В linux пользователь должен нажать Ctrl + d.

Иначе вы можете добавить некоторую логику в цикл и разбить. Например,

if(c == 'q') break; 
0

вы можете иметь петлю на введенного символа, пока введенный символ не enter (код Ascii 13)

char c; 

while ((intVal = (int)cin.get(c)) != 13){ 
...do processing on the character 'c' 
} 

или использовать

char c; 
    int intVal=0; 

    while ((c = cin.get()) != 13){ 
    ...do processing on the character 'c' 
    } 
+0

: 'c' не был объявлен в этой области. – user2891805

+0

Спасибо. Хотя теперь я получаю: «get» не был объявлен в этой области – user2891805

+0

, а затем используйте cin.get вместо get – gaurav5430

Смежные вопросы