2014-04-29 87 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]; 
}