C++ строковые переменные - Вопросы по С+

Вопрос C++ строковые переменные

Регистрация
11 Май 2013
Сообщения
99
Репутация
0
Спасибо
0
Монет
0
Почему со string ввод корректно работает, а с массивом char не работает, если это одно и тоже. Можно указать размер массива char с запасом, но почему string может работать без указания размера
875a8375f91de049494d6073098e8a2f_fd27d6b09e19aded4481aa031e33a0f5.jpg

875a8375f91de049494d6073098e8a2f_a604c6537ee2ad35347c592697ccbcdb.jpg

 
Регистрация
14 Дек 2013
Сообщения
76
Репутация
11
Спасибо
0
Монет
0
string это автоматический массив который хранит в себе char (буквы).
Считай как вектор. Размер массива и его выделение он делает сам.
А char* сам по себе это просто указатель. Кто знает куда он указывает и что там находится? В Си договорились что если указатель имеет формат (char*) то функциям ввода - вывода следует интерпретировать его как строку. И не более того.
">>" это перегруженный оператор для классов ввода вывода. По умолчанию он не может напрямую записывать в указатель (это небезопасная операция и не в стиле с++).
Однако вы можете это исправить и добавить соответствующую перегрузку сами.
 
Регистрация
9 Сен 2013
Сообщения
96
Репутация
-3
Спасибо
0
Монет
0
и еще зачем-то разыменование
 
Регистрация
24 Окт 2013
Сообщения
99
Репутация
0
Спасибо
0
Монет
0
Потому что в первом случае не объявлен ни char, ни массив char. Объявлен указатель на char.
 
Сверху Снизу