我正在尝试读回一个我写入二进制文件的字符串,但它给了我一些问题,我不知道发生了什么。我使用以下代码打开并阅读我的文件:
ifstream input([filePath UTF8String], ios::in | ios::binary);
int numStringBytes;
input.read((char*)&numStringBytes, 4);
char *names;
input.read((char*)names, numStringBytes);
input.close();
文件读取代码还有很多,但它是专有的,这是不断崩溃的部分。它运行良好加载前两个文件,但是当我尝试打开第三个文件时,它在输入.read((char *)name,numStringBytes)上与EXC_BAD_ACCESS崩溃;线。我认为没有任何理由会崩溃。任何人的想法?我正在使用以下代码在VB.NET中编写二进制文件:
Dim myFS As New FileStream(savePath, FileMode.Create)
Dim encoding As New System.Text.UTF8Encoding()
Dim stringBytes() As Byte = encoding.GetBytes("++string")
Dim stringByteSize(0) As Integer
stringByteSize(0) = stringBytes.Count
Dim stringCountBytes(3) As Byte
Buffer.BlockCopy(stringByteSize, 0, stringCountBytes, 0, stringCountBytes.Count)
myFS.Write(stringCountBytes, 0, stringCountBytes.Length)
myFS.Write(stringBytes, 0, stringBytes.Length)
myFS.Close()
答案 0 :(得分:2)
names
。
你可以使用类似的东西:
char *names = new char[ numStringBytes ];
input.read((char*)names, numStringBytes);
...
delete[] names; // don't forget to dealocate
或者,更好的是,使用std::vector
:
std::vector<char> names( numStringBytes, 0 ); // construct a big enough vector
input.read((char*)&names[ 0 ], numStringBytes);