cin.getline () пропускает

Хорошо, вот очень простой вопрос:
В следующем разделе кода «cin.getline ()» не запускается:

cout<< "Specify USB drive letter: ";
char usbD[1];
char outputLoc [40];
cin.getline(usbD, 1, '\n');
cout<< "\n" << usbD << "\n";

Что я делаю неправильно?

2

Решение

Вам нужно 2 пробела для хранения строки с одним символом, потому что c ++ использует \0 разграничить строку. Вы можете изменить свой код следующим образом:

cout<< "Specify USB drive letter: ";
char usbD[2];
char outputLoc [40];
cin.getline(usbD, 2, '\n'); // the 2 here will be the drive letter and the ending \0
cout<< "\n" << usbD << "\n";
2

Другие решения

Вам нужен usbD [2] — для буквы и конца строки '\0',

От http://www.cplusplus.com/reference/iostream/istream/getline/

  • IStream& getline (char * s, streamsize n);
  • IStream& getline (char * s, streamsize n, char delim);
s
A pointer to an array of characters where the string is stored as a c-string.

n
Maximum number of characters to store (including the terminating null character).
2

@PiotrNycz прав, вы не оставили места для завершающего нуля. Но если все, что вам нужно, это один символ, то нет причин использовать массив.

char usbD;
cin.get(usbD);
0