Чтение ввода в строку в стиле C

0

Я работаю над проектом для своего класса программирования, который требует от меня работы со строками. Программа начинается с запроса пользователю ввести фразу. Обычно я бы объявлял что-то вроде:

    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

Любые советы помогут и будут очень признательны, спасибо.

  • 0
    Вы имеете в виду cin >> phrase; и cout << phrase; ?
  • 0
    Добыча разделена пробелами.
Показать ещё 9 комментариев
Теги:
string

2 ответа

2
Лучший ответ

Вам нужно использовать cin.getline(var_id, var_length) а не cin >> var_id, который фактически останавливает сохранение ввода в переменной, когда он встречает space или new line.

Если вы хотите узнать больше о cin.getline и о том, какие проблемы может вызвать его использование, вы можете посмотреть на этот пост: Программа пропускает cin.getline()

  • 0
    Хорошо, спасибо, но как мне придумать «var_length», если я не знаю, что пользователь будет вводить как фразу?
  • 1
    Укажите длину буфера / массива. Создайте массив достаточно большой, по вашему мнению.
Показать ещё 3 комментария
0

Если вы читаете ввод в статическом массиве символов, вы можете использовать sizeof (charArray), чтобы определить его максимальную длину. Но учтите, что последний символ будет концом строки, поэтому вы можете прочитать максимальную длину-1 символов в этом массиве.

char phrase[12] ;
cin.getline(phrase, sizeof(phrase));
  • 0
    Массив не должен быть статичным ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню