2015-02-07 19 views
0

我正在做一些調試,並且我意識到數據的讀取是錯誤的。我試圖使用分隔符將從txt讀取的數據存儲到不同的變量中。C++將數據從txt存儲到使用分隔符的變量中

data.txt中

homer:mtrjw:member:0 
bryan:gw~fs:member:0 
adam:fifr:member:0 
admin12:firns67:admin:0 

代碼:

string user, pwd, role; 
string lock; 
ifstream inFile; 
inFile.open("data.txt"); 

while(inFile.good()){ 

    getline(inFile, user, ':'); 
    getline(inFile, pwd, ':'); 
    getline(inFile, role, ':'); 
    getline(inFile, lock, ':'); 

    cout << user << " " << pwd << " " << role << " " << lock << " " << endl; 
    /* 
    some if conditions... 
    }*/ 
} 

輸出:

homer mtrjw member 0 
bryan 
gw~fs member 0 
adam fifr 
member 0 
admin12 firns67 admin 
0 
taken yfpjs member 0 
brian 
gwnfs member 1 
miller rnqqjw 
member 0 
1 
miller rnqqjw 

正如可以看到只輸出第一線被正確地存儲和顯示,第二線路向前都是錯誤的。任何解決方案?

+0

將分隔符添加到輸出中:「cout <<」user:「<< user <<」pwd:「<< ...」。你的價值觀並不在你認爲的地方。 – molbdnilo 2015-02-07 08:42:04

+0

nope does not make a different i only cout to see data,is wrong wrong – 2015-02-07 08:50:56

+0

是的,這是錯誤的。添加分隔符會指出您遇到錯誤。 – molbdnilo 2015-02-07 08:56:42

回答

1

我認爲有兩個問題: 第一個問題是,您正在尋找四次。但是,當它是第四次了,你應該期望'\ n',因爲':':

string user, pwd, role; 
string lock; 
ifstream inFile; 
inFile.open("data.txt"); 

while(inFile.good()){ 
getline(inFile, user, ':'); 
getline(inFile, pwd, ':'); 
getline(inFile, role, ':'); 
getline(inFile, lock, '\n'); 

cout << user << " " << pwd << " " << role << " " << lock << " " << endl; 
/* 
some if conditions... 
}*/ 

}

第二個是你的「\將只後布萊恩滿足n'在這種情況下成爲的一部分。

0

變化

getline(inFile, lock, ':'); 

getline(inFile, lock); 

當您使用第一種形式,它讀取從第一行,換行的0行了,一切都交給在第一:第二行並將其放入lock

相關問題