gpt4 book ai didi

c++ - 使用编码如何将 BSTR 写入文件?

转载 作者:行者123 更新时间:2023-11-28 08:15:51 26 4
gpt4 key购买 nike

我有一个将文件写入 BSTR 的函数,但我不能将它写入包含编码的文件?这是我的函数,请指正!

unsigned long Vnpt_WriteFile(const LPCTSTR pFilePath, const BYTE* pbData, const DWORD cbData)
{
DWORD numbytes = 0;
unsigned long rv = 0;
FILE* fileHandle;

HANDLE fh = CreateFile(pFilePath, FILE_WRITE_DATA,0,NULL,CREATE_ALWAYS,0,NULL);
if (fh == INVALID_HANDLE_VALUE){
rv = CKR_CREATE_FILE_ERROR;
return rv;
}

if(!WriteFile(fh, pbData, cbData, &numbytes, NULL)){
rv = CKR_WRITE_FILE_ERROR;
}
CloseHandle(fh);
return rv;
}

最佳答案

BSTR 是宽字符 (wchar_t) 字符串。使用 WriteFile 等通用函数将它们写入文件应该没有问题。唯一的问题是使用某些文本编辑器查看文件。要解决这个问题,您必须放置一个 Byte Order Mark (BOM) 在文件的开头,在您编写实际内容之前。这将向文本编辑器指示文件的内容。但是请注意,当您阅读文件内容时,您必须注意这一点 - 它会在文本之前包含该 BOM。

您可以按照以下方式做一些事情(未选中):

unsigned char BOM[2] = {0xFF, 0xFE};
WriteFile(fh, BOM, 2, &numbytes, NULL);

在您创建文件之后和写入 BSTR 的内容之前。

后期添加,只是为了澄清我的第一句话:BSTR 不完全是 wchar_t 的数组,但为了将其内容写入文件,可以这样对待它。有关更多信息,请阅读 Eric's Complete Guide To BSTR Semantics .

关于c++ - 使用编码如何将 BSTR 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com