簡體   English   中英

為什么同時使用兩個 getline function,第二個不帶 \n 字符?

[英]Why does using two getline function together, second one doesn't take the \n character?

#include <bits/stdc++.h>
using namespace std;

int main(){
    string str1, str2;
    getline(cin, str1);  // aaa
    getline(cin, str2);  // bbb
    cout << str1 << " " << str2;   // aaa bbb
    return 0;
}

當我將str1輸入為"aaa\n"時,為什么第二個getline()不采用\n
cout應該打印"aaa"而不是"aaa bbb"

cppreferencestd::getline的描述(粗體我的):

...直到發生以下情況之一...

b) 下一個可用的輸入字符是 delim,由 Traits::eq(c, delim) 測試,在這種情況下,分隔符從輸入中提取,但不附加到 str

因此,在您的情況下,每個輸入末尾的換行符都是從輸入 stream 中提取的,但不會添加到兩個string變量中。


另外,請看一下:為什么我不應該#include <bits/stdc++.h>?

第一個std::getline()讀取aaa和其后的換行符,但丟棄換行符。 str1中沒有保存'\n'字符。

然后第二個std::getline()讀入bbb和它后面的換行符,但丟棄換行符。 str2中沒有保存'\n'字符。

暫無
暫無

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

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