ここで非常に簡単な質問をします。次のコード セクションでは、「cin.getline()」が実行されません。
cout<< "Specify USB drive letter: ";
char usbD[1];
char outputLoc [40];
cin.getline(usbD, 1, '\n');
cout<< "\n" << usbD << "\n";
私は何を間違っていますか?
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";
文字と文字列の終わりには usbD[2] が必要です'\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).
@PiotrNyczは正しいです。終了するnullの余地を残しませんでした。ただし、必要な文字が 1 つだけの場合は、配列を使用する理由はありません。
char usbD;
cin.get(usbD);