J'essaye d'écrire dans un fichier et je veux utiliser Write System Call pour le rendre plus rapide. Fondamentalement, j'ai un QVector et je veux stocker les résultats dans un fichier. À l'origine, je ne faisais qu'interrompre le tableau mais c'était trop lent. J'ai donc fait des recherches et trouvé quelque chose qui s'appelle Write System Call, mais je n'arrive pas à comprendre comment configurer le code.Comment utilisez-vous l'appel système en écriture en C++?
C'est ce que je l'ai essayé jusqu'à présent:
/*Header File*/
QVector<unsigned short> rawData;
/*Implementation File*/
int fd = open("output.txt", O_WRONLY)L
write(fd, &rawData, rawData.size());
close(fd);
Alors que le code ci-dessus ne se bloque pas sur moi, il ne fait pas écrire quoi que ce soit dans le fichier de sortie. Des idées de ce que je fais mal?
EDIT:
En utilisant fwrite
Je suis capable d'écrire dans le fichier, mais les données contenues dans le fichier est un peu étrange Unicode. Fondamentalement, ce n'est pas le nombre qui est ce que j'essaie d'obtenir. Voici ce que je fais:
FILE * pFile;
pfile = fopen("pixelValues.txt", "wb");
fwrite(&rawData, sizeof(unsigned short), sizeof(rawData), pFile);
fclose(pFile);
Quelle est la déclaration de 'rawData'? – Barmar
Si c'est un 'std :: vector', vous devez utiliser' & rawData [0] '. Voir http://stackoverflow.com/questions/6485496/how-to-get-stdvector-pointer-to-the-raw-data – Barmar
Il n'y a aucune raison que vous deviez utiliser des appels non portables comme write() pour "faire choses plus rapides "- vous pouvez utiliser la fonction portable fwrite(). En outre, vous devez vérifier que le fichier a effectivement ouvert. –