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;
}

このコードは正常に動作します。この後、ファイル内の文字列を「the grades you scored are 100 90 80 70 60」に変更します。ここで、上記のコードを実行しようとすると、次のような出力が得られます:-

0
0
0
0
0
0

後者の場合の合計の計算方法を教えてください。また、ここでファイル内の整数の数を知っています。ファイルの評点数がわからない場合は?

4

2 に答える 2

0

質問の2番目の部分、つまり入力の総数を知らずに入力を読むことに答えます:-

#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 に答える
0

「あなたが採点した成績は」が文字列ストリームの先頭部分であるためです。

そこから int を読み取ることはできません。それはあなたに0を与えるだけです

「エントリ」としていくつかの文字列を読み取り、いくつかの関数を記述してエントリを解析できます。

于 2013-09-12T14:57:57.180 に答える