Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ fstream写入文件_C++_Fstream - Fatal编程技术网

C++ fstream写入文件

C++ fstream写入文件,c++,fstream,C++,Fstream,我需要一些使用fstream写入文件的帮助。我目前可以使用fwrite方法编写。但我想使用fwrite强制转换数据类型,并使用它进行写入 以下是我到目前为止要做的事情: noOfRows = 700; noOfCols = 100 array[0] = unsigned char [noOfRows * noOfCols] fstream fstreamFile; fstreamFile.open ("fstreamFile.txt", fstream::out); for(int i =

我需要一些使用fstream写入文件的帮助。我目前可以使用fwrite方法编写。但我想使用fwrite强制转换数据类型,并使用它进行写入

以下是我到目前为止要做的事情:

noOfRows = 700;
noOfCols = 100
array[0] = unsigned char [noOfRows * noOfCols]

fstream fstreamFile;
fstreamFile.open ("fstreamFile.txt", fstream::out);

for(int i = 0; i < noOfRows; i++ )
{
fwrite(array[0]+(i*noOfRows), sizeOf(unsigned char), noOfCols, fwriteFile); // writes ok
fstreamFile.write((char*) array[0]+(i*noOfCols), sizeof(unsigned char)); // doesn't write
}
noOfRows=700;
noOfCols=100
数组[0]=无符号字符[noOfRows*noOfCols]
fstream-fstreamFile;
fstreamFile.open(“fstreamFile.txt”,fstream::out);
for(int i=0;i

有人能告诉我我做错了什么吗?我没有得到编译错误,只是没有写入文件(我以前就创建了它)。

2件事,您是否正在查找文件的正确位置?它应该位于工作目录所在的任何位置。您不需要先创建文件,它将被创建。其次,请确保它正在创建文件,您可以使用以下方法执行此操作:

if (!fstreamFile) { cout << "errorr.." << endl; }

如果(!fstreamFile){cout2件事,您是否正在查找文件的正确位置?它应该位于工作目录所在的任何位置。您不需要事先创建文件,它将被创建。其次,请确保它正在创建文件,您可以使用:

if (!fstreamFile) { cout << "errorr.." << endl; }

如果(!fstreamFile){cout您倾向于使用iostreams来避免强制转换

给定一个无符号字符数组,您可以只使用算法和迭代器来编写文件

#include <fstream>
#include <algorithm>
#include <iterator>

// your main and array declaration here

ofstream fstreamFile("fstreamFile.txt");
copy(
    array,
    array + sizeof(array),
    ostream_iterator<unsigned char>(fstreamFile)
);
#包括
#包括
#包括
//您的主和数组声明在这里
流fstreamFile(“fstreamFile.txt”);
抄袭(
阵列,
阵列+sizeof(阵列),
ostream_迭代器(fstreamFile)
);

您倾向于使用iostreams来避免强制转换

给定一个无符号字符数组,您可以只使用算法和迭代器来编写文件

#include <fstream>
#include <algorithm>
#include <iterator>

// your main and array declaration here

ofstream fstreamFile("fstreamFile.txt");
copy(
    array,
    array + sizeof(array),
    ostream_iterator<unsigned char>(fstreamFile)
);
#包括
#包括
#包括
//您的主和数组声明在这里
流fstreamFile(“fstreamFile.txt”);
抄袭(
阵列,
阵列+sizeof(阵列),
ostream_迭代器(fstreamFile)
);
(char*)数组[0]+(i*noOfCols)

这是在位置0处获取数组的值,然后将该值强制转换为一个
char*
(给出一些随机乱码指针),然后将
i*noOfCols
添加到该值中。我相信这可能是您想要的:

(char*)(&array[0]+(i*noOfCols))

<>但是,风格上,我建议使用C++的转换。
reinterpret\u cast(&array[0]+i*noOfCols)

我还建议使用
sizeof(array[0])
来代替
sizeof(unsigned char)
,只是为了更通用一点

此外,您似乎正在尝试用一维数组模拟二维数组。将数组声明为
无符号字符数组[noOfRows][noOfCols];
然后正常操作二维数组将更为简单。您的方法无法获得任何性能。

(char*)数组[0]+(i*noOfCols)

这是在位置0处获取数组的值,然后将该值强制转换为一个
char*
(给出一些随机乱码指针),然后将
i*noOfCols
添加到该值中。我相信这可能是您想要的:

(char*)(&array[0]+(i*noOfCols))

<>但是,风格上,我建议使用C++的转换。
reinterpret\u cast(&array[0]+i*noOfCols)

我还建议使用
sizeof(array[0])
来代替
sizeof(unsigned char)
,只是为了更通用一点


此外,您似乎正在尝试用一维数组模拟二维数组。将数组声明为
无符号字符数组[noOfRows][noOfCols]更为简单
然后在二维上正常操作。你的方法不会给你带来任何性能。

很好,Rocky,它正在将文件写入我的工作目录。我觉得不在那里检查很傻。但是,它似乎用不可读的字符填充。我知道这与在写入之前正确地转换它有关文件。数组的类型是unsigned char…但是当我尝试将其转换为unsigned char时,我遇到了这个错误:错误C2664:“std::basic_ostream::write”:无法将参数1从“unsigned char*”转换为“const char*”。您是否在某个地方填充了数组?我在上面代码中看到的只是数组的声明位置,而不是填充位置。另外,m可能您想要的是数组[0][i*noOfCols]是的,我之前正在填充数组。我非常确定我想以数组[0]+(i*noOfCols)的形式访问它。不过谢谢你的建议。。很好,Rocky,它正在将文件写入我的工作目录。我觉得不在那里检查很傻。但是,它似乎用不可读的字符填充。我知道这与在将其写入文件之前正确强制转换有关。数组的类型为unsigned char…但我在en我尝试将其转换为无符号字符:错误C2664:“std::basic_ostream::write”:无法将参数1从“unsigned char*”转换为“const char*”是否在某处填充数组?我在上面的代码中看到的只是数组的声明位置,而不是填充位置。此外,可能您需要的是数组[0][I*noOfCols]是的,我以前正在填充数组。我很确定我想以数组[0]+(I*noOfCols)的形式访问它。谢谢你的建议。看起来和你好大卫:谢谢你的回答。你所说的很有意义,经过参考。我意识到我的错误,希望它能起作用。但是它没有。而且,我把它选为(char)是一个错误。我本来想把它选为(char)(unsigned char)。也就是说,这是我的新代码:fstreamFile.write((char)(&array[0]+(inofocols)),sizeof(array[0]);我得到的错误是