0

我试图从 txt 文件中检索整数并将它们相加以获得总数。我使用stringstream类做到了这一点。文本的字符串是:- 100 90 80 70 60。提取整数并添加它们的代码如下:-

#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
int main(void)
{
    ifstream inFile("C:\\computer_programs\\cpp_programs\\exp6.txt",ios::in);
    stringstream sstr;
    string from_file;
    int grade;
    int total = 0;
    getline(inFile,from_file);
    sstr<<from_file;
    while(sstr
    {
        sstr>>grade;
        cout<<grade<<endl;
        total+=grade;
    }
    cout<<total<<endl;
    inFile.close();
    return 0;
}

这段代码工作正常。之后,我将文件中的字符串修改为“你的分数是 100 90 80 70 60”。现在,如果尝试运行上面的代码,我得到的输出为:-

0
0
0
0
0
0

你能帮我告诉我在后一种情况下如何计算总数吗?另外,在这里我知道文件中的整数个数。不知道档案中成绩的情况怎么办?

4

2 回答 2

0

因为“你的分数是”是你的字符串流的主要部分。

您无法从中读取 int 。它只会给你一个0

您可以将某些字符串读取为“条目”并通过编写一些函数来解析条目。

于 2013-09-12T14:57:57.180 回答
0

我将回答问题的第二部分,即在不知道输入总数的情况下读取输入:-

#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
int main(void)
{
    ifstream inFile("C:\\computer_programs\\cpp_programs\\exp6.txt",ios::in);
    string data;
    int grades,total=0;
    getline(inFile,data);
    stringstream sstr;
    sstr<<data;
    while(true)
    {
        sstr>>grades;   
        if(!sstr)
            break;
        cout<<grades<<endl;
        total+=grades;
    }
    cout<<total<<endl;
    return 0;
}
于 2013-09-12T18:26:56.847 回答