为什么控制台会覆盖输出?
Why does the console overwrite output?
我正开始为一个大约有 8000 个 ID 的文件编写一个 csv 文件解析器。当 运行 时,在读取和打印大约一半的 ID 后,Clion 控制台开始覆盖第一个输出,因此在 运行 结束时,我的控制台输出中的第一个 ID 是第 2626 个而不是第一个.我的代码中的什么对此负责?
在开关开始前打印每个读取的字符时,输出完成。当我将 csv 中的数量缩短到 6000 左右时,它也适用于少量的 ID。
int main() {
string buffer;
char zeichen;
ifstream eingabe;
eingabe.open("../lib/Daten.csv");
int zustand=0;//0=Token, 1=Werte
if(eingabe){
while(!eingabe.eof()) {
eingabe.get(zeichen);
//cout<<zeichen; // with only this it works
switch(zeichen){
case';':
if(zustand==0){
cout<<"Token: "<<buffer<<"; ";
}
else if(zustand==1){
cout<<"Wert: "<<buffer<<"; ";
}
buffer="";
break;
case'\n':
if(zustand==0){
zustand=1;
cout<<"Token: "<<buffer<<endl;
}
else if(zustand==1){
cout<<"Wert: "<<buffer<<endl;
}
buffer="";
break;
default:
buffer+=zeichen;
break;
}
}
}
eingabe.close();
return 0;
}
评论中所有有帮助的人都回答了。好像跟Clion有关
我正开始为一个大约有 8000 个 ID 的文件编写一个 csv 文件解析器。当 运行 时,在读取和打印大约一半的 ID 后,Clion 控制台开始覆盖第一个输出,因此在 运行 结束时,我的控制台输出中的第一个 ID 是第 2626 个而不是第一个.我的代码中的什么对此负责?
在开关开始前打印每个读取的字符时,输出完成。当我将 csv 中的数量缩短到 6000 左右时,它也适用于少量的 ID。
int main() {
string buffer;
char zeichen;
ifstream eingabe;
eingabe.open("../lib/Daten.csv");
int zustand=0;//0=Token, 1=Werte
if(eingabe){
while(!eingabe.eof()) {
eingabe.get(zeichen);
//cout<<zeichen; // with only this it works
switch(zeichen){
case';':
if(zustand==0){
cout<<"Token: "<<buffer<<"; ";
}
else if(zustand==1){
cout<<"Wert: "<<buffer<<"; ";
}
buffer="";
break;
case'\n':
if(zustand==0){
zustand=1;
cout<<"Token: "<<buffer<<endl;
}
else if(zustand==1){
cout<<"Wert: "<<buffer<<endl;
}
buffer="";
break;
default:
buffer+=zeichen;
break;
}
}
}
eingabe.close();
return 0;
}
评论中所有有帮助的人都回答了。好像跟Clion有关