📜  在包含任何字符的文件中查找整数之和

📅  最后修改于: 2021-05-30 05:34:21             🧑  作者: Mango

您将得到一个包含任何类型字符的文本文件。您必须找到整数值的总和。

例子:

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

脚步 :
1.要以只读模式打开文件,我们可以使用ifstream库
2.遍历文件的所有行并查找所有整数
3.如果找到整数,则将其存储在temp变量中,因为下一个字符可能是整数
4.如果找到除整数以外的任何字符,则将temp值添加到最终结果中,然后再次设置temp = 0
5.如果最后一个元素是整数,则如果不是,则必须在循环后添加temp,否则temp的值将已经为零。因此总和不会受到影响。

// C++ implementation of given text file which
// contains any type of characters. We have to
// find the sum of integer value.
#include 
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;
}

输出:

6727 (for Input 1)
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”