问题标签 [wchar-t]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
737 浏览

c - 分隔空字节分隔的 UNICODE C 字符串

首先,这不是以下内容的副本:Turn a C string with NULL bytes into a char arraychar * ,因为当's 是 Unicode时,给定的答案不起作用。

我认为问题在于,因为我尝试使用 UTF-8 编码的 char * 而不是 ASCII char *,并且每个字符的长度不同,因此,这不起作用:

有没有人有类似的解决方案适用于 Unicode 字符串?

我已经在这个问题上敲了四个多小时了。C不同意我的看法。

编辑:认为问题在于 char * 现在是 UTF-8 而不是 ASCII。

0 投票
2 回答
2501 浏览

c++ - utf8 和 utf16 转换

我有一个wchar_t字符串,比如L"hao123--我的上网主页",可以转成utf8

编码,输出字符串是“hao123锛嶏紞鎴戠殑涓婄绣涓婚〉”,但最后还是要写这个

字符串转换为纯文本文件,其格式为 utf16(我从其他人那里知道),“hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875”。

因为我必须将它保存在 C++ std 字符串中,然后将其写入文件,我该如何转换

“hao123锛嶏紞鎴戠殑涓婄绣涓婚>”到“hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875”在char或C++标准字符串中?

谁能给我一些提示?

提前致谢!

0 投票
2 回答
83843 浏览

c++ - 在 C++ 中获取 `wchar_t*` 的长度

请问,我怎样才能找出wchar_t*c++ 中类型变量的长度?

下面的代码示例:

我想知道有多少个字符dimObjPrefix包含

0 投票
6 回答
1340 浏览

c - 将 C 中的 long 转换为 char* 的最简单方法是什么?

在C中做到这一点的干净方法是什么?

到目前为止我提出的解决方案都很丑陋,尤其是 allocate_properly_size_whar_t 使用双浮点基础数学。

0 投票
4 回答
1021 浏览

c++ - 在 Visual Studio 2005 上使用 TCHAR 的 C++ 模板函数特化

我正在编写一个使用模板化 operator<< 函数的日志记录类。我将模板函数专门用于宽字符串,以便在编写日志消息之前进行一些从宽到窄的翻译。我无法让 TCHAR 正常工作 - 它不使用专业化。想法?

这是相关的代码:

和源文件

现在,我使用下面的测试程序来练习这些功能

运行上述测试显示以下内容:

不幸的是,这并不完全正确。我真的很希望最后一个是“TCHAR”,这样我就可以转换它。根据 Visual Studio 的调试器,当我进入测试 5 中调用的函数时,类型是 wchar_t*& - 但它没有调用适当的专业化。想法?

我不确定它是否相关,但这是在 Windows CE 5.0 设备上。

0 投票
2 回答
2234 浏览

string - 是否可以在 C++/CLI 中获取指向 String^ 内部数组的指针?

目标是避免在需要时复制字符串数据const wchar_t*

答案似乎是肯定的,但该函数PtrToStringChars没有自己的 MSDN 条目(仅在 KB 和博客中作为技巧提及)。这让我很怀疑,我想和你们核实一下。使用该功能是否安全?

0 投票
3 回答
52265 浏览

c++ - 如何将 char 数组转换为 wchar_t 数组?

我不能用cmd

那么,如何将char数组转换为wchar_t数组?

0 投票
1 回答
444 浏览

c - swprintf 阻塞 8 位范围之外的字符

这发生在 OS X 上,尽管我怀疑它适用于任何 UNIX-y 操作系统。我有两个看起来像这样的字符串:

在调试器中,test1 看起来像“Ds”,而 test2 看起来像“D's”(带有卷曲撇号)。然后我调用这个代码:

第一个 swprintf 调用工作正常。第二个返回 -1(缓冲区不变)。

我猜这个问题与语言环境有关,但谷歌搜索并没有为我提供任何有用的信息。这是重现我看到的问题的最简单方法。我真正感兴趣的是 vswprintf(),但我认为这是密切相关的。

为什么 swprintf 会阻塞 8 位范围之外的 unicode 字符?有没有办法解决这个问题?

0 投票
3 回答
2597 浏览

c++ - 如何将 wchar_t** 转换为 char**?

我得到 argv 作为 wchar_t**(见下文),因为我需要使用 unicode,但我需要将其转换为 char **。我怎样才能做到这一点?

0 投票
2 回答
252 浏览

c++ - 与遗留 TCHAR 代码交互的正确样式

我正在修改广泛使用 TCHAR 的其他人的代码。在我的代码中只使用 std::wstring 是不是更好的形式?wstring 应该等同于 Widechar 平台上的 TString,所以我看不到问题。理由是,使用原始 wstring 比支持 TCHAR 更容易......例如,使用 boost:wformat。

下一个维护者会更清楚哪种风格?我自己浪费了几个小时试图理解字符串的复杂性,似乎只使用 wstring 就会切断你需要理解的一半内容。

...唯一的区别是分配器。

在您的程序落在 Window 9x 机器上的不太可能的情况下,仍然有一个 API 层可以将您的 UTF-16 字符串转换为 8 位字符。使用 TCHAR 进行新代码开发已经没有意义了。 资源