簡體   English   中英

C ++第一個字符不使用getline打印出來

[英]C++ first character does not print out using getline

運行此代碼后,它將提示我輸入第一個路徑,例如c:/ hello,然后輸入第二個路徑,例如c:/ world。

輸出:

  • 第一條路徑: c:/hello
  • 第二條路徑:/world

如您所見,第二條路徑前面沒有ac。 但是在cout <<“之后輸入第二條路徑后,我刪除了cin.get(): 它能夠在前面顯示c。 有人可以向我解釋為什么嗎?

system("cls");
cout << "Enter first path: ";
cin.get();
getline(cin, firstPath);
cout << endl;
cout << "First path: " << firstPath << endl;
cout << endl;
cout << "Enter second path: ";
//cin.get(); // Need to be remove to shows c:/world
getline(cin, second path);
cout << endl;
cout << "Second path: " << secondPath<< endl;
cout << endl;
system("pause")
system("cls");

TL:DR; 刪除您的cin.get();


刪除cin.get(); 它將從讀取一個字符cin ,所以從下一個讀cin將讀取下一個字符,所以在第二情況下,“C”是由讀cin.get()並因此下一讀取, getline(cin, second path)將不會讀取它(它已經被讀取)。 為什么在第一次使用cin.get()之后讀取“ c”是個謎(也許您在“ c”之前輸入空格?

僅當您想在輸入流中獲取下一個字符並將其存儲在某個位置時,才使用cin.get() (例如, char c = cin.get() ,在這種情況下為c == 'c' )。 如果要跳過當前字符,請使用cin.ignore()cin.get()相同,除了可以選擇要跳過多少個字符外,它也不會返回任何已讀取的字符。 無論哪種方式,在這種情況下都不宜使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM