gpt4 book ai didi

C++ - 将 ANSI 编码的文本读取为宽字符串

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

我的目标是阅读 ANSI 编码的文本。但出于某些原因,我使用的是 fgetws()(不是 fgets)函数,当然文件是以二进制模式打开的。这是演示我的问题的短代码

  bool testfunc(wchar_t path[])
{
wchar_t buffer[10];

if( FILE * fr=_wfopen(path,L"rb") )
{
fgetws(buffer,sizeof(buffer),fr);
fclose(fr);
return true;
}
else return false;
}

当我调用此函数并将 ANSI 编码的文本文件路径作为参数传递时,运行时出现访问冲突错误。似乎当文本大小足够大时会发生错误。我不知道问题出在哪里。

最佳答案

根据文档,fgetws 的第二个参数是数组中宽字符的数量,而不是字节数,因此:

fgetws(buffer,sizeof(buffer)/sizeof(*buffer),fr);

一个有用的经典宏是:

#define countof(x) (sizeof(x)/sizeof(*(x)))

或者花哨的 C++ 模板:

template <typename T, int N>
int countof(T (&a)[N])
{
return N;
}

关于C++ - 将 ANSI 编码的文本读取为宽字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175198/

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