我以下列方式使用std ::函數getline():使用多種類型的行字符結束的GET線()
std::fstream verify;
verify.open(myURI.c_str());
std::string countingLine;
if(verify.is_open()){
std::getline(verify, countingLine);
std::istringstream iss(countingLine);
size_t pos;
// Check for the conventional myFile header.
pos = iss.str().find("Time,Group,Percent,Sign,Focus");
if(pos == std::string::npos){//its not there
headerChk = false;
this->setStatusMessage("Invalid header for myFile file");
return 0;
}
// loop that does more validation
iss.clear();
}
的問題是我編碼在Mac(和一些文件可以通過Windows工具和蘋果工具進行修改)。一些行尾字符是\ r而不是\ n,所以我的文件字符串永遠不會分成幾行。我相信還有第三個我應該檢查。我無法找到爲多個endOfLine字符設置delim參數的示例。
如果有人可以幫助這個例子或者一個不同的方法,那將是很棒的。 謝謝
'\ r \ n'是你失蹤的人。可能有幫助:http://stackoverflow.com/questions/6864759/determining-the-newline-character-for-the-environment-ac-program-is-being-com –
我依稀記得有另一個步驟,刪除'\ r '在處理混合平臺時調用'std :: getline'後。 –
與問題無關但是......爲什麼你使用'iss'?另外,我懷疑你對clear()做了什麼錯誤的假設:當clear()從容器中移除元素時,它只會清除「std :: istream」的錯誤標誌。 –