ввод слов по слову

Я только начал изучать C ++. Я просто играл с ним и сталкивался с проблемой, которая включала ввод строки по слову, каждое слово, разделенное пробелом. Я имею в виду, предположим, что у меня есть

name place animal 

как вход. Я хочу прочитать первое слово, выполнить некоторые операции над ним. Затем прочитайте второе слово, выполните некоторые операции над этим, а затем прочитайте следующее слово и так далее.

Сначала я попытался сохранить всю строку с помощью getline.

  #include using namespace std; int main() { string t; getline(cin,t); cout << t; //just to confirm the input is read correctly } 

Но как я могу выполнить операцию над каждым словом и перейти к следующему слову?

Кроме того, в то время как googling вокруг около C ++ я видел во многих местах, вместо того, чтобы использовать «using namespace std», люди предпочитают писать «std ::» со всем. Почему это? Я думаю, что они делают то же самое. Тогда зачем беспокоиться о том, чтобы писать это снова и снова?

Поместите строку в строку и извлеките слово за словом:

 #include  #include  using namespace std; int main() { string t; getline(cin,t); istringstream iss(t); string word; while(iss >> word) { /* do stuff with word */ } } 

Конечно, вы можете просто пропустить часть getline и читать слово за словом непосредственно из cin .

И здесь вы можете прочитать, почему using namespace std считается плохой практикой.

(Это касается других, которые могут ссылаться)

Вы можете просто использовать cin и char . Ввод cin ограничивается первым пробелом, с которым он сталкивается.

 #include using namespace std; main() { char word[50]; cin>>word; while(word){ //Do stuff with word[] cin>>word; } } в #include using namespace std; main() { char word[50]; cin>>word; while(word){ //Do stuff with word[] cin>>word; } } 

getline сохраняет всю строку сразу, а это не то, что вы хотите. Простое решение состоит в том, чтобы иметь три переменные и использовать cin, чтобы получить их все. C ++ автоматически проанализирует пробелы.

 #include  using namespace std; int main() { string a, b, c; cin >> a >> b >> c; //now you have your three words return 0; } 

Я не знаю, какую конкретную «операцию» вы говорите, поэтому я не могу вам помочь, но если она меняет символы, читайте строки и индексы. Документация на C ++ отличная. Что касается использования пространства имен std; против std :: и других библиотек, об этом уже много говорили. Попробуйте эти вопросы в StackOverflow для запуска.