C ++ - 使用stringstream对象从外部txt文件中的句子读取字符串和整数

时间:2013-09-12 14:41:14

标签: c++ ifstream stringstream

我尝试从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

你能帮助我并告诉我在后一种情况下如何计算总数吗?另外,在这里我知道文件中的整数数量。当我不知道文件中的成绩数量时会怎么样?

2 个答案:

答案 0 :(得分:0)

因为“你得分的成绩是”是你的弦流的主要部分。

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

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

答案 1 :(得分: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;
}