0

このような各行に名前と年齢があるテキストファイルを読み込もうとしています

Tom
55
Bob
12
Tim
66

次に、次のような文字列と int を受け取る関数に渡す必要があります。

sortDLL.Insert(name, age);

ただし、これを行う方法がわかりません。私は次のようにテストしましたが、動作します(テキストファイルをバイパスします):

string tom = "tom";
string bob = "bob";
string tim = "tim";
int a = 55;
int b = 12;
int c = 66;

     sortDLL.Insert(tom, a);
     sortDLL.Insert(bob, b);
     sortDLL.Insert(tim, c);

しかし、テキスト ファイルを読み込んで送信しようとすると、プログラムが正しく動作しません。これは私が現在試していることであり、他のいくつかのことをいじりましたが、運がありませんでした:

ifstream infile ("names.txt");


while(getline(infile, line));
{
    istringstream ss(line);
    if (ss >> name)
        cin >> name;
    else if (ss >> wt)
        cin >> wt;

    sortDLL.Insert(name, wt);


}
infile.close();

いつものように、これを機能させるための助けをいただければ幸いです。

4

1 に答える 1

1

正しいコードは次のようになるはずだと思います。1 つの挿入ごとに 2 行を読む必要があることに注意してください。

while(getline(infile, line))
{
    stringstream ss(line);

    ss >> wt;
    if(ss.fail()) {
        name = line;
        continue;
    }
    else {
        // cout << name << ":" << wt << endl;
        sortDLL.Insert(name, wt);
    }
}
于 2013-10-31T01:48:24.367 に答える