当我从文件中读取时,它会在最后添加一个空格。 所以之后,当我需要对字符串进行排序时,它也会对额外的空间进行排序。并添加到输出文件中。
int main()
{
int siz=1000000;
char a[siz];
ifstream readfile("AllAlpha.txt");
ofstream outfile("sorted.txt");
if(!readfile)
{
cout << "An error occurred while opening the input data stream file \"AllAlpha.txt\"!" << endl;
return 1;
}
// read file
int i=0;
while (!readfile.eof())
{
readfile.get(a[i]);
i++;
}
int size=i;
// sort the array
//quicksort(a, 0, size-1);
// output sorted array to file
for (int num=0;num<size;num++)
{
outfile<<a[num];
}
return 0;
}
答案 0 :(得分:1)
使用:
readfile.get(a[i]);
i++;
您假设readfile.get(a[i])
成功。读完文件的最后一个字符后,情况并非如此。
将您的循环更改为:
char c;
while (readfile.get(c))
{
a[i] = c;
++i;
}
答案 1 :(得分:0)
这可能是为什么在while条件中使用readfile.eof ()
几乎总是错误的一个完美示例:eof
标志仅在实际读取文件末尾时设置。因此,在这种情况下,将读取文件末尾并将其分配给a[i]
,然后设置iostream::eof
,然后程序执行才会继续while
循环。