Home > Back-end >  How to get int from a line of a text and add them together in c ?
How to get int from a line of a text and add them together in c ?

Time:08-16

Hi I have got an text file and inside writing:

15 7 152 3078 
178 352 1 57

What I want to do is get the int's from first line, sum up the numbers and make it an integer. And than do it for the second line with another int. How can I do that with c ? Thanks for your help.

CodePudding user response:

You can use stringstream to convert a string into integer. And to sum a vector of integer, use accumulate algorithm. You can pass a filename as first argument to the program, by default the program assume the filename as input.txt.

Here is a complete program to demonstrate this.

#include <iostream>
#include <fstream>
#include <sstream>
#include <numeric>  // for accumulate
#include <vector>

int main(int argc, char *argv[]) {

    std::string filename{"input.txt"};
    if(argc > 1) {
        filename = argv[1];
    }

    // open the input file
    std::ifstream inputFile(filename);
    if(!inputFile.is_open()) {
        std::cerr << "Unable to open " << filename << std::endl;
        return 1;
    }

    std::string line;
    // read the file line by line
    while(getline(inputFile, line)) {
        if(line.empty()) continue;

        std::stringstream ss(line);
        std::vector<int> v;
        int x;
        // extract the content as integer from line
        while(ss >> x) {
            v.push_back(x);
        }
        // add them all
        auto total = std::accumulate(v.begin(), v.end(), 0);
        std::cout << total << std::endl;
    }
}

CodePudding user response:

As in Aamir's answer, but with separate listing of sums. Maybe that helps too.

#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>


int main(int argc, char *argv[]) {
    std::string filename{"input.txt"};
    if(argc > 1) {
        filename = argv[1];
    }

    // open the input file
    std::ifstream inputFile(filename);
    if(!inputFile.is_open()) {
        std::cerr << "Unable to open " << filename << std::endl;
        return 1;
    }

    std::vector<int> ints;
    std::string line;

    // read the file line by line
    int i = 0;
    while(getline(inputFile, line)) {
        if(line.empty()) continue;
        ints.push_back(0);
        std::stringstream f(line);
        std::string s;
        while (getline(f, s, ' ')) {
            ints[i] = ints[i] std::stoi(s);
        }
        i  ;
    }
    int j = 0;
    for (auto intItem: ints){
        std::cout << "sum"<<j  <<": " << intItem << std::endl;
    }
}
  •  Tags:  
  • c
  • Related