2014-04-29 101 views
0

這是我第一次寫在C++編寫代碼(Visual Studio 2010中)。我有我想要實現的邏輯,但我不能把它的代碼。看了很多樣品,但沒有發現。如何閱讀txt文件C++,並將其拆分成多列

基本上我有一個製表符分隔txt文件,我想讀它,並把數據轉換成字符串,字符串數組任何東西。

的問題是使用內置的:

ifstream in; 
in.open("someData.txt"); 
while(!in.eof())//the text from the file is stored in different variables 
    { 
    in>>inputData[0]; 
    in>>inputData[1]; 
    } 

將會把數據轉換成字符串數組,但即使出現數據行的空間,這將打破它分成兩列是由空間拆分行問題。

我怎樣才能正確地通過線進入使用C柱讀取數據線++?

+0

避免測試eof - 它在大多數情況下是錯誤的(如在您的示例中)。 –

回答

0

如果列數據可能會包含空格,更好地運用"各地串或添加'\t'作爲分隔符。

您可以重新排序,如下圖所示,以確保您不會在最後讀一個空行代碼中使用。

ifstream in("someData.txt"); 
while(in>>inputData[0]) 
{ 
    in>>inputData[1]; 
} 

或者甚至更好,如果在任何行中輸入第二列丟失。

std::string line; 
while(getline(std::cin,line)) 
{ 
    // Splitting into 2 in case there is no space 
    // If you colum may contain space, replace below lines with better logic. 
    std::istringstream iss(line); 
    inputData[0] = inputData[1] = default_value; 
    iss >> inputData[0] >> inputData[1]; 
}