【发布时间】:2011-11-13 18:25:00
【问题描述】:
这个类应该从数据中读取一些行,并从它们中读取我可以在进一步操作中使用的变量。但由于某种原因,如果它检测到数据并尝试加载它,它就会冻结。为什么? 我看不到我的错误希望你能帮助我。
顺便说一句:课堂上使用的奇怪语言是德语^^希望这没关系。
void Kunde::laden(){
string inhalt_anrede, inhalt_vname, inhalt_nname, inhalt_knummer, inhalt_pin, inhalt_guthaben;
int anrede, vorname, nachname, knummer, pin, guthaben;
system("cls");
cout << "wie ist ihr nachname?" << endl;
cin >> nname;
user1.open(nname, ios::in);
if(!user1.is_open()){
cout << "Datei nicht gefunden" << endl;
}
if(user1.is_open()){
for ( int anrede=0;!user1.eof();anrede++){
if (anrede==1){
getline(user1, inhalt_anrede);
strcpy(Anrede,inhalt_anrede.c_str());
}
}
for ( int vorname=0;!user1.eof();vorname++){
if (vorname==2){
strcpy(vname,inhalt_vname.c_str());
}
}
for ( int nachname=0;!user1.eof();nachname++){
if (nachname==3){
getline(user1, inhalt_nname);
strcpy(nname,inhalt_nname.c_str());
}
}
for ( int knummer=0;!user1.eof();knummer++){
if (knummer==4){
getline(user1, inhalt_knummer);
echte_kontonummer=atol(inhalt_knummer.c_str());
}
}
for ( int pin=0;!user1.eof();pin++){
if (pin==5){
getline(user1, inhalt_pin);
echte_pin=atoi(inhalt_pin.c_str());
}
}
for ( int guthaben=0;!user1.eof();guthaben++){
if (guthaben==6){
getline(user1, inhalt_guthaben);
Guthaben=atoi(inhalt_guthaben.c_str());
}
}
cout << "Daten erfolgreich geladen." << endl;
}
user1.close();
}
我会用一个例子来解释一个循环的构造器
for ( int guthaben=0;!user1.eof();guthaben++){ //i think this is understandable
if (guthaben==6){ //in this case the desired value is on line 6
getline(user1, inhalt_guthaben);
Guthaben=atoi(inhalt_guthaben.c_str()); //from string to int to the desired value Guthaben.
}
}
希望你能帮助我。
【问题讨论】:
-
请不要使用 !user1.eof();在 for :(,我也不认为你需要那么多循环