2

好的,这是一个非常简单的问题:在以下代码部分中,“cin.getline()”没有运行:

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

我究竟做错了什么?

4

3 回答 3

2

您需要 usbD[2] - 用于 string 的字母和结尾'\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).
于 2012-09-20T22:18:56.627 回答
2

您需要 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";
于 2012-09-20T22:26:21.297 回答
0

@PiotrNycz 是对的,您没有为终止空值留出空间。但是,如果您只需要一个字符,则没有理由使用数组。

char usbD;
cin.get(usbD);
于 2012-09-20T22:21:36.067 回答