Find sum of integers in a file which contains any characters

You are given a text file which contains any type of characters. You have to find the sum of integer values.

Examples:

Input : text.txt 
Let contents of test.txt be : 
:-,,$%^5313&^*1)(*(
464sz29>>///11!!!
(*HB%$#)(*0900

Output : 6727

Input : text1.txt 
Let contents of test.txt be : 
234***3r3r()
()(0)34

Output : 274



Steps :
1. To open the file in only read mode we can use ifstream library
2. Iterate through all rows of the file and find all integers
3. If integer found then store it in temp variable because there is a chance that next character can be an integer
4. Add temp value in final result if any character found except integers and set temp = 0 again
5. If last element is an integer then we have to add temp after loop if it isn’t then the value of temp will already be zero. So sum will not affected.

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of given text file which
// contains any type of characters. We have to
// find the sum of integer value.
#include <bits/stdc++.h>
using namespace std;
  
// a function which return sum of all integers
// find in input text file
int findSumOfIntegers()
{
    ifstream f; // to open the text file in read mode
    f.open("text.txt");
      
    int sum = 0, num = 0;
  
    // One by one read strings from file. Note that
    // f >> text works same as cin >> text.
    string text;
    while (f >> text) {
  
        // Move in row and find all integers
        for (int i = 0; text[i] != '\0'; i++) {
  
            // Find value of current integer
            if (isdigit(text[i])) 
                num = 10 * num + (text[i] - '0');            
  
            // If other character, add it to the
            // result
            else {
                sum += num;
                num = 0; // and now replace
                         // previous number with 0
            }
        }
    }
    sum += num;
    return sum;
}
  
// Driver program to test above functions
int main()
{
    cout << findSumOfIntegers();
    return 0;
}

chevron_right


Output:

6727 (for Input 1)

This article is contributed by Harshit Agrawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.