0

次のコード スニペットに問題があります。

これは、stringstream の "stringstream css(cv.back())" ビットに関連しています。コメントアウトされている場合、プログラムは正常に実行されます。

私のプログラムのいくつかでそれを取得し続けるので、それは本当に奇妙ですが、コンソールプロジェクトを作成するだけで、コードは正常に実行されます. 私の Win32 プログラムの中には、そうするものもあれば、そうでないものもあります (その場合、「ベクトル反復子は参照解除できません」が返されますが、問題なくコンパイルされます)。

どんなアイデアでも本当に感謝しています。ありがとう!

vector<double> cRes(2);
vector<double> pRes(2);

int readTimeVects2(vector<double> &cRes, vector<double> &pRes){
    string segments;
    vector<string> cv, pv, chv, phv;
    ifstream cin("cm.txt");
    ifstream pin("pw.txt");
    ifstream chin("hm.txt");
    ifstream phin("hw.txt");

    while (getline(cin,segments,'\t')) {
        cv.push_back(segments);
    }

    while (getline(pin,segments,'\t')) {
        pv.push_back(segments);
    }

    while (getline(chin,segments,'\t')) {
        chv.push_back(segments);
    }

    while (getline(phin,segments,'\t')) {
        phv.push_back(segments);
    }

    cin.close();  
    pin.close();  
    chin.close();   
    phin.close();

    stringstream phss(phv.front());
    phss >> pRes[0];
    phss.clear();
    stringstream chss(chv.front());
    chss >> cRes[0];
    chss.clear();

    stringstream pss(pv.back());
    pss >> pRes[1];
    pss.clear();
    stringstream css(cv.back());
    css >> cRes[1];
    css.clear();

    return 0;
}
4

1 に答える 1

1

ここには 2 つの大きな問題があります。これらの問題のいずれかまたは両方が、発生している問題の原因である可能性があります。

スコープ外から名前を隠しています:

vector<double> cRes(2);
vector<double> pRes(2);

int readTimeVects2(vector<double> &cRes, vector<double> &pRes){

cRes と pRes は、説明したグローバル変数ではなく、関数に渡される変数になります。

この問題を診断する前に、問題が発生した呼び出し元のコードを示す必要があります。


ここには別の問題があります:

stringstream phss(phv.front());
stringstream chss(chv.front());
stringstream pss(pv.back());
stringstream css(cv.back());

phv、chv、pv、および cv が空でないことを確認するチェックはありません。上記のstd::getlines に問題があり、正常に完了できなかった可能性は十分にあります。また、渡したファイルが空だった可能性も十分にあります。

于 2010-04-19T13:31:43.320 に答える