Проблема при попытке конвертировать C# в C ++ - PullRequest
0 голосов
/ 15 марта 2020

Я пытался преобразовать часть C# в C ++, но не могу понять, почему она не работает.

Код C#:

FileStream fileStream = File.Open(filename, FileMode.Open, FileAccess.ReadWrite);
byte[] buffer = new byte[8];
fileStream.Seek(4L, SeekOrigin.Begin);
fileStream.Read(buffer, 0, 8);
fileStream.Seek(4L, SeekOrigin.Begin);
fileStream.Write(buffer, 4, 4);
fileStream.Write(buffer, 0, 4);
fileStream.Flush();
fileStream.Close();

Мой C ++ преобразование:

std::fstream fileStream("file.dtx");

if (fileStream.is_open()) {
    fileStream.seekg(0, fileStream.end);
    int length = fileStream.tellg();
    fileStream.seekg(0, fileStream.beg);

    char* buffer = new char[8];

    fileStream.seekg(4, fileStream.beg);
    fileStream.read(buffer, 8);
    fileStream.seekg(4, fileStream.beg);
    fileStream.write(buffer, 4);
    fileStream.write(buffer, 0);
    fileStream.flush();
    fileStream.close();

    delete[] buffer;
    printf("Done!");
}

1 Ответ

3 голосов
/ 15 марта 2020

Ваш C#

fileStream.Write(buffer, 4, 4); // Write bytes 4-7 from buffer
fileStream.Write(buffer, 0, 4); // Write bytes 0-3 from buffer

Ваш C ++

fileStream.write(buffer, 4); // Write bytes 0-3 from buffer
fileStream.write(buffer, 0); // Write nothing

Что вы хотите

fileStream.write(buffer + 4, 4); // Write bytes 4-7 from buffer
fileStream.write(buffer, 4);     // Write bytes 0-3 from buffer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...