好的,这是一个非常简单的问题:在以下代码部分中,“cin.getline()”没有运行:
cout<< "Specify USB drive letter: ";
char usbD[1];
char outputLoc [40];
cin.getline(usbD, 1, '\n');
cout<< "\n" << usbD << "\n";
我究竟做错了什么?
您需要 usbD[2] - 用于 string 的字母和结尾'\0'
。
来自http://www.cplusplus.com/reference/iostream/istream/getline/
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 个空格来存储单个字符的字符串,这是因为 c++ 使用 a\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";
@PiotrNycz 是对的,您没有为终止空值留出空间。但是,如果您只需要一个字符,则没有理由使用数组。
char usbD;
cin.get(usbD);