CHROMOSOME_IQ AllQele
CHXROMOSOME_IA 等位基因
CHRCOMOSOME_IZ AllelCe
我正在从文件中读取上述行。
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";
}
这些行是三行,但是,我得到的输出是 4。我不知道为什么会这样。eof 应该可以完美地工作,而是在第 4 次迭代中给出 mein 空值。
输出:
值
是 CHROMOSOME_IQ
值是 AllQele
值是 CHXROMOSOME_IA 值是 AlleSle
值是 CHRCOMOSOME_IZ
值是 AllelCe
值是
值是 AllelCe
另外,在传递文件句柄和行时,我必须使用stringstream
,否则,在调用函数 void test 时我将无法读取。