![](/img/trans.png)
[英]Ignoring the first character while using getline function for inputs in c++
[英]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.