2011-10-09 55 views
-1

阅读的字符串,整数和双打混合我有一个txt文件看起来像这样:从C++中的文件

1 
Some string 
Some other string 
3 
10,5 
20 
20 

我需要阅读所有这些值到不同类型的变量。至于从文件中读取整数和双精度读起来似乎正在工作,但随后发生弦乐乐趣的开始。
似乎字符串被读取,但然后我试图输出他们整个控制台只是崩溃。

编辑: “崩溃”我的意思是“无响应”类型的消息出现。和我使用的代码基本上是:

ifstream file; 
file.open ("C:\path\file.txt"); 
file >> int1; 

getline(file, string1); 
getline(file, string2); 
file >> int2; 
file >> double1; 
file >> double2; 
file >> double3; 
// .... 

file.close(); 

编辑2:不知何故,而不是1的值int1是-858993460。

我收到真的很困惑......

编辑3:现在所有瓦莱斯正在建立,但它们不是写在文件中的值。 首先int和第一srting是不错,但第二个字符串是红色的0和双打都红作为

-92559631349317830000000000000000000000000000000000000000000000 

既然有文件中的一些价值观和他们接受的类型模式我跑到一个周期得到他们所有的问题是,第一次读取后,值不再红。

+1

与'刚刚崩溃'相关的信息?那么一些代码呢? –

+0

“崩溃”是什么意思?什么是错误信息? – jwfriese

+1

@Povylas这些类型是否分类? (即重复相同的方式) – 2011-10-09 18:29:05

回答

1

file.open( “C:\路径\ file.txt的”);

\是转义字符

修复

file.open( “C:\\路径\\ file.txt的”);

0

如果这些类型的重复同样的方式,我建议:

ifstream str("MyFile.dat"); 
int counter = 0; 
const int MAX_DATA_CNT = 4; 
const int DOUBLE = 1; 
const int INT = 2; 
.... 

while (!str) 
{ 
    if (++counter == MAX_DATA_CNT) 
     counter = 1; 
    switch(counter) 
    { 
    case DOUBLE: // input double 
     break; 
    case INT: // input int 
     break; 
    .... 
    } 
}