c ++ символьные массивы, используйте в cin.getline () - PullRequest
7 голосов
/ 26 сентября 2011

У меня есть следующий код:

char myText[256];
cin.getline(myText,256);

Почему именно я должен передать массив символов в cin.getline (), а не в строку?

Я читал, что в целом лучше использовать строки, чем символьные массивы. Должен ли я затем преобразовать массив символов в строку после получения ввода с помощью cin.getline(), если это возможно?

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Вы используете метод member istream. В этом случае Cin. Подробности этой функции можно найти здесь:

http://en.cppreference.com/w/cpp/io/basic_istream/getline

Однако вы можете использовать std::getline

Который использует строку вместо массива символов. Использовать строку проще, поскольку они знают свои размеры, они автоматически растут и т. Д., И вам не нужно беспокоиться о нулевом завершающем символе и так далее. Также возможно преобразовать массив символов в строку с помощью соответствующего строкового конструктора.

4 голосов
/ 26 сентября 2011

Я считаю, что это неудачный исторический артефакт.

Однако вы можете использовать бесплатную функцию std::getline.

std::string myText;
std::getline(std::cin,myText);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...