std :: cin.getline (f_name, 10) - PullRequest
       33

std :: cin.getline (f_name, 10)

0 голосов
/ 20 января 2011

Если у меня есть, например, следующие утверждения:

char f_name[11];
std::cin.getline(f_name,10);

Значит ли это:* Прочитайте введенную строку и передайте ее как значение для "f_name"?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Да, и нет.

char f_name[11];

объявляет массив char с 11 элементами. На самом деле это не строка - вы можете считать ее «строкой C», если в конце она имеет NUL ('\0') (чего нет).

std::cin.getline(f_name, 10);

Может или не может прочитать всю введенную строку, потому что он читает только до 9 символов. Вам нужно не сделать буфер больше, чем значение, данное cin.getline.

Если у вас нет особых причин не делать этого, используйте std::getline для чтения строки в C ++. Пример ниже.

#include <string>
std::string line;
std::getline(std::cin, line);
1 голос
/ 20 января 2011

Да, вы правы!

char f_name[11];

объявляет массив f_name с 11 элементами.

std::cin.getline(f_name,10);

запрашивает вводимое значение, которое затем сохраняетэто в f_name[11].

...