#c
#c
Вопрос:
После попытки запустить этот простой код я могу ввести значение только один раз, почему? (компилятор — g )
#include <iostream>
using namespace std;
int main()
{
char* str = new char[10];
cin.get(str, sizeof(str));
char* strline = new char[10];
cin.getline(strline, sizeof(strline));
return 0;
}
Ответ №1:
cin.get(str, sizeof(str));
считывает первые 7 == 8-1 (1 байт для нулевого разделителя) символов вашего ввода (или до первого разделителя), потому sizeof(str)
что возвращает размер указателя, а в вашем случае это 8. Он не очищает поток и не удаляет разделитель по умолчанию n
. cin.getline
считывает до 7 символов до новой строки. Например, вы вводите Hello Wor
и нажимаете enter. cin.get
читает Hello W
и cin.getline
читает or
.
Комментарии:
1. В моем случае cin.get читает «Hello W», а cin.getline читает «или». Есть ли какой-либо способ заставить мой код работать так, как задумано?
2. @anxiety_rgb Каков предполагаемый способ? Почему вы используете
cin.get
andcin.getline
? Вы должны предпочестьstd::string