0

CHROMOSOME_IQオールキューレ

CHXROMOSOME_IA アレスレ

CHRCOMOSOME_IZ アレルセ

上記の行をファイルから読み取っています。

void test(ifstream*, string*, string*, string*, string*, string*);
void read_file(char*);
int main(int v, char** argv)
{
    if (v != 2)
    {
        cout << "Files missing";
        exit(EXIT_FAILURE);
    }
    // calling method 
    read_file(argv[1]);
}
void read_file(char* j)
{

    string line, TChr, TType1, TType2, tUnk, TInfo;
    vector<pair<string, string> > TName;

    char t_strand, t_offset;
    int t_loc1, t_loc2;

    ifstream fileH;
    fileH.open(j);
    int count = 0;
    test(&fileH, &TChr, &TType1, &TType2, &tUnk, &TInfo);

    while (!fileH.eof())
    {
        ++count;
        test(&fileH, &TChr, &TType1, &TType2, &tUnk, &TInfo);

    }
    fileH.close();

    cout << count << "\n";
}
void test(ifstream* h, string* chr, string* tt1, string* tt2, string* tUnk, string* Tinfo)
{

    string line;
    getline(*h, line);

    stringstream line_tab(line);

    getline(line_tab, *chr, '\t');
    cout << "The value is " << *chr << "\n";

    getline(line_tab, *tt1, '\t');
    cout << "The value is " << *tt1 << "\n";
}

行は 3 ですが、4 として出力されます。なぜこれが起こっているのかわかりません。eof は完全に機能するはずですが、4 回目の繰り返しで mein null 値が返されます。

出力:

値はCHROMOSOME_IQです
。値はAllQeleです

。値はCHXROMOSOME_IAです
。値はAlleSleです
。値はCHRCOSOME_IZです
。値はAllelCe
です
。値はAllelCeです。

また、ファイル ハンドルと行を渡すときに を使用する必要がありますstringstream。そうしないと、関数 void test を呼び出しているときに読み取ることができません。

4

0 に答える 0