问题标签 [wchar]

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 回答
64 浏览

c - 使用数组 wchar 时出错

我有一个 wchar 类型的变量(szDrive),现在我想要一个数组,它的元素具有 wchar 类型。这是我的一些代码:

但是当我写:

它有一个错误:error C2106: '=' : left operand must be l-value

有人可以解释我为什么并且可以给出解决方案吗?请!

0 投票
1 回答
3547 浏览

c - 如何将包含 UTF-8 十六进制值的字符串转换为 C 中的 wchar?

我正在使用 GCC。我有一个包含 UTF-8 字符的十六进制值的字符串,如下所示:

(这种字符串是从 xml 文件中读出的)。我希望将其转换为包含字符 \u4e86 的 wchar。

我知道我可以直接定义

但我想要这样的功能

如何?

0 投票
2 回答
31676 浏览

c++ - 如何声明 wchar_t 并稍后设置其字符串值?

我正在为 Windows 开发,我还没有找到关于如何正确声明和稍后设置 unicode 字符串的足够信息。至今,

假设上面的内容是 [1024] 是分配的字符串长度,即我需要在该字符串中有多少个字符。L"" 确保引号中的字符串是 unicode(我发现的一个 alt 是 _T())。现在稍后在我的程序中,当我尝试将该字符串设置为另一个值时,

我得到编译器错误,我做错了什么?

此外,如果有人有一个简单而深入的 unicode 应用程序资源,我想有一些链接,曾经为一个专门用于此的网站添加了书签,但现在似乎已经消失了。

编辑

我提供了整个代码,我打算将其用作 DLL 函数,但到目前为止没有返回任何内容。

0 投票
2 回答
4020 浏览

kernel - 将 WCHAR * 转换为 UNICODE 字符串

首先尝试Windows驱动程序开发。假设 WCHAR 数组不是以空值结尾的,如何将 WCHAR 数组(来自用户空间)转换为 UNICODE_STRING(在内核模式下) ?

我是否应该验证它是否以 null 结尾并且它是否没有分配新的缓冲区(为 null 增加 2)然后使用 RtlAnsiXXX 函数?什么是正确的方法?

谢谢!

0 投票
2 回答
4617 浏览

c++ - 如何替换 TCHAR 字符串中的字符

我有一个包含路径的 TCHAR 字符串。我需要/\路径中的所有出现(如果有的话)替换。保存路径的变量定义如下:

如果mypath包含C:/new/newfile/a.txt,那么我需要/将 替换为 ,\以便生成的字符串变为C:\new\newfile\a.txt

另外,我需要适应的文件已经有UNICODE定义如下:

类似的函数wcsncmp已用于字符串比较。如何在 TCHAR 字符串中实现字符替换?

0 投票
1 回答
1457 浏览

c++ - 我是否正确地将 PCWSTR 指向字符串文字?

我对 C++ 有点生疏,所以我正在寻求有关字符串指针问题的帮助。

首先,让我们考虑一些带有整数的指针基础知识:

运行时,main() 创建一个整数并将其地址传递给 SetBob。在 SetBob 中,值(在 pBob 指向的地址处)设置为 5。当 SetBob 返回时,bob 的值为 5。

现在,让我们考虑一个字符串常量:

运行时,main() 创建一个指向空字符串的 PCWSTR,并将其地址传递给 SetBob。在 SetBob 中,PCWSTR 指针现在指向一个 Done 字符串。当 SetBob 返回时,bob 的值为“Done”。

我的问题是:

  1. 在调试器中,我看到调用 SetBob 后 bob 字符串设置为 Done。但为什么这行得通?在整数示例中,我为整数分配了空间,因此我可以在该空间中存储一个值。但是,在字符串示例中,PCWSTR 只是一个指针。这里的想法是字符串常量也在内存中,所以我只是指向那个常量?
  2. 因为“完成”文字在 SetBob 中,我是否必须担心尽管指向它,“完成”的内存可能会被回收?例如,如果我创建了一个 WCHAR 缓冲区,我会将“Done”复制到缓冲区中,这样我就不会担心了。但是因为我指向函数中的文字,所以在函数结束后的某个时候,该文字是否会被销毁,让 bob 出乎意料地指向什么?
0 投票
1 回答
1622 浏览

c++ - 从 DLL 返回 std::wstring 是否安全?

根据一些较早的 StackOverflow 问题(Unable to pass std::wstring across DLL , C++ DLL returned pointer to std::list<std::wstring>),C++ DLL 返回 a 被认为是不安全的,std::wstring因为不能保证 main程序具有相同的定义,std::wstring因此可能会导致崩溃。

但是,在http://en.cppreference.com/w/cpp/string/basic_string中,它现在似乎std::wstring可以与WCHAR数组互换使用:

(C++11 起)basic_string 的元素是连续存储的,也就是说,对于 basic_string s,&*(s.begin() + n) == &*s.begin() + n 对于任何 n 在[0, s.size()),或者等效地,指向 s[0] 的指针可以传递给期望指向 CharT[] 数组的第一个元素的指针的函数。

我已经通过传递&s[0]给期望WCHAR*缓冲区的 WINAPI 函数对此进行了测试,并且它似乎可以工作(std::wstring正确填充了 WINAPI 的结果)。因此,既然std::wstring现在显然可以像WCHAR数组一样对待,我决定重新审视这个问题:可以std::wstring从 DLL 安全地返回 a 吗?为什么或者为什么不?

0 投票
1 回答
115 浏览

string - 从 std::string 变量动态创建“LPCWSTR”变量

目前我有代码(typedef _Null_terminated_ CONST WCHAR *LPCWSTR;):

但需要启用这样的功能:

0 投票
3 回答
16517 浏览

c - wchar_t sprintf 的问题

我正在学习如何使用 wchar,但我无法使用 snprintf() 复制 char。我想将文本从 a 复制到 b,但它从不打印值。我究竟做错了什么?我想使用 snprintf 而不是别的。

//输出

开始

984567

结尾

0 投票
1 回答
148 浏览

c - c语言中一个简单的凯撒密码的wchar实现

我正在为阿姆哈拉语(埃塞俄比亚广泛使用的语言之一)编写一个简单的 Caesar 实现。这是代码

代码在没有警告的情况下编译。如果 key 小于或等于 5,则工作正常。当 key value 为 6 及以上时,问题就出现了。就我测试而言,它会打印一个额外的字符。我通过 gdb 运行它以查看它在哪里拾取额外的字符。但没有多大意义。这是我的问题:

  1. 为什么它对 0 到 5 键有效,但对以上无效?
  2. 它从哪里得到它为大于 5 的键打印的额外字符?

如果它有助于我机器上的 wchar 大小为 4 字节。

谢谢

编辑:

样本输入:

0010 与 unicode 表上没有相应符号的字符一样显示。

再次感谢。