C ++:解析和文件I / O

时间:2018-10-05 23:29:10

标签: c++ file parsing io

我正在尝试编写一个从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;
}

1 个答案:

答案 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循环。我建议您稍微了解一下这些文件操作,因为此处的错误似乎是由于您对它们的了解不足而引起的。希望这会有所帮助!