Печать всей строки, введенной через стандартный ввод

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

Программа 1:

int main(){
char s[10];
cout << "Enter a String\n";
cin >> s;
cout << "The entered String is\n";
cout << s << "\n";
return 0;
}

Когда я даю ввод через командную строку «Hello World», вывод, который я получаю, только «Привет»

Программа 2:

int main(){
char s[] = "Hello World";
cout << "The entered String is\n";
cout << s << "\n";
return 0;
}

В этом случае я получаю вывод «Привет, мир».

В чем разница между обеими программами? Логика та же? Как я могу получить всю строку «Привет, мир» когда вводится через командную строку? Есть ли способ?

1

Решение

использование getline():

string s;
getline(cin, s);
cout << "The entered String is\n";
cout << s << "\n";

Проблема с вашим кодом в том, что оператор извлечения входного потока >> только получает символы до следующего пробела (так, только одно «слово»). getline() Функция получает всю строку.

4

Другие решения

В вашем первом фрагменте кода длина вашего массива составляет всего 10 символов. Ввод hello world приведет к переполнению массива, и произойдут непредсказуемые события.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector