【发布时间】:2016-12-24 21:57:18
【问题描述】:
我正在尝试写入文件并希望使用写入系统调用来使其更快。基本上我有一个 QVector,我想将结果存储在一个文件中。最初我只是在遍历数组,但它太慢了。所以我做了一些研究,发现了一个叫Write System Call的东西,但我不知道如何设置代码。
这是我迄今为止尝试过的:
/*Header File*/
QVector<unsigned short> rawData;
/*Implementation File*/
int fd = open("output.txt", O_WRONLY)L
write(fd, &rawData, rawData.size());
close(fd);
虽然上面的代码不会让我崩溃,但它实际上并没有向输出文件写入任何内容。任何想法我做错了什么?
编辑:
使用 fwrite 我可以写入文件,但文件中的数据是一些奇怪的 Unicode。基本上这不是我想要得到的数字。这是我正在做的事情:
FILE * pFile;
pfile = fopen("pixelValues.txt", "wb");
fwrite(&rawData, sizeof(unsigned short), sizeof(rawData), pFile);
fclose(pFile);
【问题讨论】:
-
rawData的声明是什么? -
如果是
std::vector,则需要使用&rawData[0]。见stackoverflow.com/questions/6485496/… -
没有理由你应该使用像 write() 这样的非便携式调用来“让事情变得更快”——你可以使用便携式 fwrite() 函数。此外,您需要检查文件是否确实打开了。
-
@Barmar 抱歉,忘记添加了。它现在就在那里。
-
QVector不是标准的 C++ 类。