?
用std::getline可以從stream中讀取一行數(shù)據(jù), 默認(rèn)的行結(jié)束符號(hào)為'\n'。最近遇到這樣一種情況:使用getline處理有相同text內(nèi)容的std::ifstream和std::istringstream時(shí),得到的結(jié)果有差異。從std::istringstream中返回的一行會(huì)多出一個(gè)不可見的'\r'符號(hào)。
對(duì)于用記事本創(chuàng)建的text文件,每一行用\r\n表示。當(dāng)用std::ifstream讀取的時(shí)候,std::ifstream內(nèi)部會(huì)處理\r\n為\n,只少從結(jié)果上看是這樣。當(dāng)把整個(gè)文件讀入buffer中,再用std::istringstream處理的時(shí)候,\r仍然被保留著。
而\r多數(shù)情況下是多余的,因此需要處理掉。新的讀取行的函數(shù)如下:
Powered by: C++博客 Copyright © 力為