我正在尝试编写一个从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;
}
答案 0 :(得分:1)
while (inFile >> a >> z >> b >> z >> c && z == ','){
sum = a + b + c;
std::cout << sum;}
这部分代码旨在读取具有您要读取的结构的行num,num,num。因此,当它读取第一行时,它将继续到下一行,并且找不到数字并终止。您还应该在此处添加逻辑以读取下一行,并将数字和单词结合在一起,形成一个读段,例如
std:string ex=""
while (inFile >> a >> z >> b >> z >> c >> ex && z == ','){
sum = a + b + c;
// add the logic for printing here
std::cout << sum;}
摆脱第二个while循环。我建议您稍微了解一下这些文件操作,因为此处的错误似乎是由于您对它们的了解不足而引起的。希望这会有所帮助!