【发布时间】:2018-03-03 03:48:24
【问题描述】:
我有一个这种格式的文本文件:
石油工程 94600 175500 海洋工程 73900 123200 经济与数学 60000 122900 地球物理 54100 122200 认知科学 54000 121900我所拥有的是课程名称、职业早期平均工资和职业中期工资,所有这些都用制表符分隔。包含多个单词的课程名称以空格分隔。
我想读取课程名称并将其放入一个变量中,第一笔付款放入第二个变量中,第三笔付款放入第三个变量中。
int main(){
ifstream in;
in.open("Salaries.txt");
string course;
int mid;
int avg;
if (in.fail()){
cout<< "failed to open file";
exit(1);
}
while(!in.eof()){
in >> course >> avg >> mid;
cout << course<<endl;
}
in.close();
}
当我编译这段代码时,它什么也不输出,程序也没有退出或终止。
cmets中有人指出不推荐使用eof(),所以我改用了:
while(in >> course >> sm >> lg){
cout << course << endl;
}
进程退出而不向屏幕输出任何内容。我在一个看起来像这样的输入文件上进行了尝试:
核数 1 新 0 核心 100 输入 5000 核心 20它获取字符串并将其放入一个变量中,并将数字放入另一个变量中,然后打印正确的输出。所以问题是原始文件中课程名称中的单词之间的空格,我不知道如何解释。
【问题讨论】:
-
并且逐行调试显示程序在做什么?
-
单步执行程序,看看它在哪里没有达到您的预期。想一想,查看变量值,找出原因。如果您想成为一名开发人员,学习调试是一项要求,而不仅仅是一个好主意。如果有某些正当理由不能使用调试器,请添加 print / cout / trace / logging 代码以获取相同的信息。
-
保持while循环运行直到它到达文件的末尾@FeiXiang
-
@Dees:点击他提供的链接,然后阅读它指向的页面。