问题标签 [wstring]
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.
c++ - 如何告诉 wstring 我正在输入的字符串已经是 wstring?
我使用 std::string 作为文本缓冲区。然后,我确定该缓冲区中包含的数据是 UTF-16(即它实际上是一个 std::wstring)。如何将 std::string 强制转换为 std::wstring?std::string 用词不当,数据实际上是 wstring。
c++ - c++ 使用 iconv 从 UTF-8 转换为 wstring
我有一个运行以下命令的 c++ linux 应用程序:
我想将一个 UTF-8 字符向量转换为 wstring,但上面的代码返回了这个结果:
iconv 结果将第一个字符转换为另一个字符。
注意:如果我替换 UCS-4 -INTERNAL 中的 WCHAR_T,则 wstr 不包含任何内容。
有什么帮助吗?
谢谢!
c++ - 重载 wstring 和 wchar_t 中的类似转换 *
我有以下代码:
我得到:
wstring 和 wchar_t * 之间不应该有任何隐式转换(应该吗?),那么为什么会有这些歧义呢?
先感谢您
c++ - Boost 仅序列化 std::wstring 的第一个字符
我正在使用 boost 与文本存档序列化 std::wstring 变量。如果我切换到 std::string 它工作得很好,但是当我使用 wstring 时,我只得到一个字符序列化。为什么?
c++ - 堆内存分配崩溃与 std::wstring
我对 std::wstring 内存分配有一个大问题。当我尝试使用此代码时程序崩溃:
崩溃在最后一行,如果我使用以下行就不会发生:
错误是内存堆分配失败,结果是程序崩溃。为什么?怎么了?
c++ - ShellExecute 中的 wstring -> LPCWSTR 给我错误 LNK2028 和 LNK2019
您好,我正在使用 UNICODE 和 /clr 在 Visual C++ 2010(西班牙语)中编程。我有一个名为“fileFuncs.h”的头文件:
但是当我编译时给我这些错误:
错误 LNK2028:指的是未解析的符号(令牌)(0A0004A5)“extern "C" struct HINSTANCE__ * stdcall ShellExecuteW(struct HWND *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)”(? ShellExecuteW@@$$J224YGPAUHINSTANCE_ @@PAUHWND _@@PB_W111H@Z) 在函数“void __cdecl callSystem(class std::basic_string,class std::allocator >)”(?callSystem@@$$FYAXV?$basic_string@ DU?$char_traits@D@std@@V?$allocator@D@2@@std@@
错误 LNK2019: 外部符号 "extern "C" struct HINSTANCE__ * stdcall ShellExecuteW(struct HWND *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE_ @@PAUHWND _@@PB_W111H@Z) 在“void __cdecl callSystem(class std::basic_string,classstd::allocator)”函数中提到的未解决 (?callSystem@@$$FYAXV?$basic_string@DU?$char_traits@D@std@ @V?$allocator@D@2@@std@@@Z)
是某种配置吗?
c++ - 运行存储在 `std::wstring` 中的控制台命令
我有一个控制台命令,例如:
我想执行这个命令。
我该怎么做?
(它可能是 Win32 API 函数,或标准 C/C++ 库。)
android-ndk - Android NDK 中缺少 std::wstring 支持的解决方案?
我有一个游戏,它在数千个地方使用 std::wstring 作为其基本字符串类型,并使用 wchar_t 及其函数进行操作:wcsicmp() wcslen() vsprintf() 等。
问题是 R5c 不支持 wstring(撰写本文时的最新 ndk)。
由于国际化,我无法更改代码以使用 std::string 并且我会破坏许多游戏使用的游戏引擎......
我有哪些选择?
1 - 用我自己的字符串类替换字符串和 wstring
这会给我更好的平台独立性,但重新实现轮子是荒谬的。我已经开始使用字符串的 COW 实现。我需要它是 COW,因为我将它们用作 hash_maps 中的键。这当然需要大量的工作并且容易出错......但似乎这是我可以做的事情。
2 - 尝试使用我自己实现的 C 标准库的宽字符字符串函数(wcslen、mbstowcs ...)修复 NDK 重新编译 STLPort
这将是更可取的方式......但我不知道该怎么做:(
如何替换 libstdc++.a 或 libstlport_static.a 中的函数(比如说 wcslen)?(不确定它们在哪里:()
而且我不确定我需要重新实现哪些功能,我知道 wcslen 不起作用所以我想它们应该都是......
3 - 你有其他想法吗?
我等不及官方解决这个问题,如果我不知道如何做#2,我将不得不选择#1。
我在某处读到,如果您以 2.3 为目标,则可以使用 wstrings,但我应该以 Android 2.1 为目标。
PS:忘了说我当然需要使用STL,但没有RTTI,我可以毫无例外地生活。
提前致谢!
c++ - 在 C++ 中分配 StringCchVPrintfW 字符串格式缓冲区?
我在 Microsoft Windows SDK 示例中找到了此代码:
其中MAX_VPRINTF_BUFFER_SIZE
是一个大常数 (4096)。现在:
实际上不是wstring
以 UTF-16 编码,因此不是可变长度格式(对于某些外来字符使用两个以上字节)?
但是,如果将buffer
其大小调整为 4096 * 2 字节,而StringCchVPrintfW
以字符而不是字节计数,则如果遇到大于 2 字节的字符,可能会导致缓冲区溢出。
我的假设正确吗?如何解决这个问题?
c++ - 将 TCHAR 添加到 wstring:不起作用
我有一些非常简单的事情要做,我试图提示用户输入字符并将该字符保存到字符串中。然后我打印整个字符串。
该程序适用于 Windows,但我希望该程序适用于 ASCII 和 Unicode,这就是我使用 TCHAR 和 wstring 的原因。
我的问题:我无法将字符(用户输入的)添加到 wstring 上。它只是不会存储在该变量中。为什么?
我的简单代码: