2011-10-09 53 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; 
    .... 
    } 
}