3

気が遠くなるのではないかと思いますが、このコードはスマイリーフェイスを.name値として出力します!! 世界で何が起こっているのですか?これまでのところ、値が1の場合にのみ機能するようですが、それ以外の場合は適切にエラーが発生します。

コードに欠陥があることに気づきました->これについては助けは必要ありません。

#include <iostream>
#include <fstream>
#include <regex>
#include <string>
#include <list>

using namespace std;
using namespace tr1;


struct CollectedData
{
public:
    string name;
    float grade;

};

int main()
{
    string line;
    list<CollectedData> AllData;
    int count;

    ifstream myFile("test_data.txt");
    if (myFile.fail()) {cout << "Error opening file"; return 0;}
    else
    {
        cout << "File opened... \n";
        while( getline(myFile, line) ) {
            CollectedData lineData;
            lineData.name = 1;
            lineData.grade = 2;
            AllData.push_back(lineData);
        }
    }

    cout << "\n\n File contents: \n";

    list<CollectedData>::iterator Iterator;
    for(Iterator = AllData.begin(); 
            Iterator != AllData.end();
            Iterator++)
    {
        cout << "\t" << (*Iterator).name << " - ";
        cout << "\t" << (*Iterator).grade << "\n";
    }


    getchar();
    return 1;
}

:-) http://img21.imageshack.us/img21/4600/capturekjc.jpg

私はコードが役に立たないことを知っています、
なぜそれがエラーの代わりにスマイリーフェイスを私に与えているのか知りたいです

慰め。。。嘲笑

4

5 に答える 5

9

エラーの代わりにスマイリーフェイスを表示する理由を知りたい

データ型がstring、であり、charがスマイリー0x01フェイスを出力するためです。0x31代わりに、1ASCIIで文字である値を割り当てることができます。

于 2009-08-31T02:38:02.660 に答える
8

笑顔はASCII値1の文字です。理由はわかりませんが、コンパイラがそれを文字として扱うことにしたようです。そのため、笑顔になります。

于 2009-08-31T02:35:58.607 に答える
6

あなたの問題はここにあります:

lineData.name = 1;
lineData.grade = 2;

取得するシンボルはASCII1(つまり、lineData.nameを設定しているものとまったく同じ)であることに注意してください。

while( getline(myFile, line) )

行を取得して解析し、適切な文字列をlineData.nameに挿入し、整数をlineData.gradeに挿入する必要があります。

于 2009-08-31T02:33:58.937 に答える
3

文字列には文字値(1)が割り当てられています。これは、ASCII文字セットではたまたまスマイリーフェイスです。

于 2009-08-31T02:37:46.980 に答える
2

他の人が言っているように、名前は文字列型なので、それに文字列を割り当てるのが最善でしょう:

lineData.name = "1";

逆コンマは、この値が文字列であることをコンパイラに通知し、スマイリーフェイスの取得を停止します。

それは言った...

最もクール。バグ。これまで。

于 2009-08-31T04:15:06.080 に答える