2013-03-04 181 views
4

我想阅读多列,不同变量类型的文件。列数不确定,但在2或4之间。因此,举例来说,我有一个文件:C++多列阅读文件

  • 字符串INT
  • 串INT串双
  • 串INT串
  • 串INT串双

谢谢!

我修改了列的数量,将其数量修改为原来写入的2或5之间,而不是4或5。

+2

所以你想让我们写你的代码?你不付钱给我们?因此,请在这里进行研究并提出问题,以了解您在此过程中遇到的具体问题。 – 2013-03-04 16:45:39

+2

柱子是如何分开的?如果使用空格(空格或制表符),那么普通的输入操作符'>>'可以正常工作。 – 2013-03-04 16:45:45

+0

*列数是不确定的,但在4或5之间* ---但您的示例显示第一行只包含2列,而没有一列包含5列! – Praetorian 2013-03-04 16:47:37

回答

5

你可以先阅读std::getline

std::ifstream f("file.txt"); 
std::string line; 
while (std::getline(f, line)) { 
... 
} 

再行解析此行以stringstream

std::string col1, col3; 
int col2; 
double col4; 
std::istringstream ss(line); 
ss >> col1 >> col2; 
if (ss >> col3) { 
    // process column 3 
    if (ss >> col4) { 
     // process column 4 
    } 
} 

如果列中可能包含不同的类型,你必须先读入一个字符串,并然后尝试确定适当的类型。