最近写了个小程序,就是写一个文件写到指定大小。比如要写一个200MB的文件。
本来很简单的,但出了些小问题:
void write_b()
{
QFile data("test.cpt");
if (data.open(QFile::WriteOnly|QIODevice::Append))
{
QTextStream out(&data);
QString kk(1024*1024*2, 'a');
while (data.size() < 1024*1024*1024*5) )
{
out<<kk<<endl;
}
}
data.close();
}
当要写的文件大小小于1024*1024*1024的时候,一切还正常,当再大一点,好像就不行了,这一块写文件的地方好像就不执行了。难道QT不能写超过1G的文件?后来我估计是文件规模那一块是一个默认的类型,数值太大发生了溢出了。然后就把红色那一块改写成Q_INT64_C(1024*1024*1024*5),这下一切OK了。
不过我还是想问一问大家,它的那个默认类型是什么?极限值是多少?