[英]C++: Why won't getline() print the last word of the input string?
我試圖讓我的程序讀取一個字符串,然后在單獨的一行上輸出每個單詞。 當我調用此函數時,它不會打印句子的最后一個單詞。 我無法找到此問題的答案。
例如:
輸入:
你好,我的朋友
輸出:
你好
那里
我的
這是我的代碼:
istream& operator >> (istream& in, FlexString& input) {
std::string content;
while (std::getline (in,content,' ')) {
cout << content << endl;
}
return in;
}
我是C ++的新手,所以這可能很愚蠢,但是我嘗試在while循環之后添加另一個cout
調用以在下一行上打印內容 ,但是由於某種原因它不會打印它。
getline
沒有跳過最后一個單詞。 它仍在等待您完成它。 您選擇了空格字符( ' '
)作為分隔符,因此getline將讀取直到找到空格(不是制表符或換行符),或者直到輸入流結束為止。 您的循環也不會在行尾停止,就像您期望的那樣。 它會一直讀取直到流結束。
如果要讀取一行,然后逐行分隔行,則只需使用\\n
分隔符(這是默認值)調用一次getline
。 然后使用istringstream
分隔所得字符串。
std::string line;
std::getline(in, line);
std::istringstreaam iss(line);
std::string content;
while (iss >> content)
std::cout << content << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.