Я работаю над проектом для своего класса программирования, который требует от меня работы со строками. Программа начинается с запроса пользователю ввести фразу. Обычно я бы объявлял что-то вроде:
string phrase;
Тогда я буду использовать:
getline(cin,phrase);
Однако профессор сказал классу, что нам не разрешено использовать строковый класс, мы должны использовать только строки на основе c. Я мог ошибаться, но я считаю, что строки на основе c выглядят примерно так:
char phrase[12] = "hello world";
Если это то, что мой профессор подразумевает по строкам с помощью c, тогда я не знаю, как вводить в них фразу. Когда я пытаюсь это сделать, программа сохраняет только первое слово фразы и останавливается в первом месте, которое видит. Например:
char phrase[12];
cin >> phrase;
//input: hello world
cout << phrase;
//output: hello
Любые советы помогут и будут очень признательны, спасибо.
Вам нужно использовать cin.getline(var_id, var_length)
а не cin >> var_id
, который фактически останавливает сохранение ввода в переменной, когда он встречает space
или new line
.
Если вы хотите узнать больше о cin.getline
и о том, какие проблемы может вызвать его использование, вы можете посмотреть на этот пост: Программа пропускает cin.getline()
Если вы читаете ввод в статическом массиве символов, вы можете использовать sizeof (charArray), чтобы определить его максимальную длину. Но учтите, что последний символ будет концом строки, поэтому вы можете прочитать максимальную длину-1 символов в этом массиве.
char phrase[12] ;
cin.getline(phrase, sizeof(phrase));
cin >> phrase;
иcout << phrase;
?