Почему одна и та же программа выдает разные результаты, когда входные данные передаются разными методами?
Программа 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;
}
В этом случае я получаю вывод «Привет, мир».
В чем разница между обеими программами? Логика та же? Как я могу получить всю строку «Привет, мир» когда вводится через командную строку? Есть ли способ?
использование getline()
:
string s;
getline(cin, s);
cout << "The entered String is\n";
cout << s << "\n";
Проблема с вашим кодом в том, что оператор извлечения входного потока >>
только получает символы до следующего пробела (так, только одно «слово»). getline()
Функция получает всю строку.
В вашем первом фрагменте кода длина вашего массива составляет всего 10 символов. Ввод hello world приведет к переполнению массива, и произойдут непредсказуемые события.