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

1文字の文字列を格納するには、2つのスペースが必要です。これは、c++が\0文字列を区切るためにaを使用するためです。次のようにコードを変更できます。

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 に答える
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).
于 2012-09-20T22:18:56.627 に答える
0

@PiotrNyczは正しいです。終了するnullの余地を残しませんでした。ただし、必要な文字が 1 つだけの場合は、配列を使用する理由はありません。

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