【发布时间】:2018-10-05 23:29:09
【问题描述】:
我正在尝试编写一个从 txt 文件 (input.txt) 中提取的代码,如下所示:
1,2,3
Hello
2,3,4
Music
1,3,4
Dodie
3,0,1
Kitty
5,1,0
Cheese
并打印出与上面的数字相加的次数。所以第一个是 1+2+3=6,所以它会打印:Hello,Hello,Hello,Hello,Hello,Hello
目前它只打印出第一个总和,然后停止。 (目前打印总和只是为了澄清)。我觉得我需要另一个循环,但我不确定。
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
int main() {
std::ifstream inFile ("input.txt");
if (inFile.is_open()) {
std::string str;
int sum = 2;
int a, b, c;
char z;
while (inFile >> a >> z >> b >> z >> c && z == ',') {
sum = a + b + c;
std::cout << sum;
}
while (inFile >> str) {
for (int i=0; i<sum; i++) {
std::cout << str << ",";
}
printf("\n");
}
}
return 0;
}
【问题讨论】:
-
使用你的调试器一次运行你的程序,看看它做了什么,为什么。这就是调试器的用途。另外,请记住计算机编程的黄金法则:计算机将始终完全按照您的要求执行,而不是您希望它执行的操作。除非您告诉您的计算机读取带有数字的行,然后读取带有文本的行,并且在完成后重复整个过程,否则计算机不会这样做。你告诉你的电脑做什么,上面?首先阅读带有数字的行。然后阅读带有文本的行。而已。这就是您希望您的计算机执行的操作吗?
-
对上一个问题的改进非常好,劳伦。