我有一个使用text_file存储大量数字的程序。 当我必须加载这些数字时,我必须每次加载2500个数字。 我有一个while循环来反复加载它......
现在,问题发生在我猜的while循环中。
ifstream mfile("abc.txt", ifstream::out);
if(mfile.is_open())
{
getline(mfile, b);
char* ch = new char[b.length() + 1];
strcpy(ch, b.c_str());
result = atof(strtok (ch,";"));
while(i<125)
{
cout<< strtok (NULL,";")<<" ";
i++;
}
i=0;
}
else
{
cout<<"probleem";
}
mfile.close();
这是一个简短的代码,它是更复杂的代码,也就是问题。
请注意,这段代码必须在while循环中。
但它只运行一次代码,可能是因为mfile
不能多次使用。
当我想多次读取文件时,它必须从上一次读取结束时开始读取。
答案 0 :(得分:1)
ifstream mfile("abc.txt", ifstream::out); // why out ??
---&GT;
ifstream mfile("abc.txt");
if(mfile.is_open())
{ while(getline(mfile, b))
{ char* ch = new char[b.length() + 1];
strcpy(ch, b.c_str());
result = atof(strtok (ch,";"));
while(i<125)
{ cout<< strtok (NULL,";")<<" ";
i++;
}
i=0;
}
}
else { cout<<"probleem"; }
mfile.close();
您还可以使用streampos tellg();
和seekg(pos)
编辑:
istream& getline (istream& is, string& str);
将返回mfile
,while(mfile)
内部将隐式转换为bool
,因此有效地迭代,直到无法读取更多字符串,最后文件。