问题标签 [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.

0 投票
5 回答
904 浏览

c++ - .c_str() 怪异?无缘无故地更改数据?

我有这个简单的功能:

在该函数的第二行,我有正确的 wchar_t*。但是,当我返回时,数据会切换为垃圾数据。中间没有函数。是什么赋予了?!

0 投票
3 回答
3943 浏览

string - 我使用哪种宽字符串结构?CString 与 wstring

我有一个 C++ 中的 MFC 应用程序,它使用 std::string 和 std::wstring,并且经常从一个转换到另一个,还有很多其他的废话。我需要将所有内容标准化为单一格式,所以我想知道是否应该使用 CString 或 std::wstring。

在应用程序中,我需要从字符串表生成字符串,处理大量需要常量 tchar 或 wchar_t 指针的窗口调用,编辑控件,并与需要 BSTR 的 COM 对象的 API 交互。

我也有字符串向量,那么 CStrings 向量有什么问题吗?

哪一个更好?各自的优缺点是什么?

例子

BSTR 到 wstring

wstring 到 BSTR

字符串资源到 wstring

GetProfileString() 返回一个 CString。

整数转字符串格式:

0 投票
6 回答
1885 浏览

c++ - 在 C++ 下处理 Unicode 字符串的最佳多平台方式是什么?

我知道 StackOverflow 上已经有几个关于std::stringvsstd::wstring或类似的问题,但没有一个提出完整的解决方案。

为了获得一个好的答案,我应该定义要求:

  • 多平台使用,必须在 Windows、OS X 和 Linux 上运行
  • 将平台特定的 Unicode 字符串(如CFStringRefwchar_t *char*UTF-8 或 OS API 所需的其他类型)转换为/从其转换的工作量最小。备注:我不需要代码页转换支持,因为我希望在所有支持的操作系统上只使用 Unicode 兼容函数。
  • 如果需要一个外部库,这个库应该是开源的,并且在一个非常自由的许可下,比如 BSD,而不是 LGPL。
  • 能够使用printf 格式语法或类似的语法。
  • 字符串分配/释放的简单方法
  • 性能不是很重要,因为我假设 Unicode 字符串仅用于应用程序 UI。
  • 一些例子将不胜感激

我真的很感激每个答案只有一个建议的解决方案,通过这样做,人们可以投票支持他们喜欢的替代方案。如果您有多个选择,只需添加另一个答案。

请指出对你有用的东西。

相关问题:

0 投票
4 回答
34826 浏览

c++ - 将 CString 转换为 std::wstring

我怎样才能从 转换CStringstd::wstring

0 投票
1 回答
2086 浏览

c++ - OS X 上的字符串到 wstring 的转换

我正在尝试将 C++ 字符串转换为 wstring。我找到了以下代码,它似乎处理重音,这就是我正在寻找的。

资源

不幸的是,对于 C 或 POSIX 之外的任何其他loc值,代码都会崩溃。这个问题已经在此处讨论过,但没有成功:MacOS 10.6 上的 std::locale breakage with LANG=en_US.UTF-8此处此处

是否有任何解决方法或其他方法可以做到这一点?

0 投票
2 回答
927 浏览

string - 从字符串到 wstring 的转换导致 ú 丢失编码

变量filepathastring包含值Música。我有以下代码:

fp然后包含值M?sica。如何在不丢失 ú 字符编码的情况下转换filepath为?fp

0 投票
5 回答
18768 浏览

c++ - 对 C++ 的 std::wstring、UTF-16、UTF-8 以及在 Windows GUI 中显示字符串感到困惑

我正在开发一个仅适用于 Windows 的英语 C++ 程序,我们被告知“始终使用 std::wstring”,但似乎团队中没有人真的对此有太多了解。

我已经阅读了题为“std::wstring VS std::string的问题。它非常有帮助,但我仍然不太明白如何将所有这些信息应用于我的问题。

我正在处理的程序在 Windows GUI 中显示数据。该数据以 XML 形式保存。我们经常使用 XSLT 将 XML 转换为 HTML 或 XSL:FO 以用于报告目的。

根据我阅读的内容,我的感觉是 HTML 应该编码为 UTF-8。我对 GUI 开发知之甚少,但我读过的一点点表明 GUI 的东西都是基于 UTF-16 编码的字符串。

我试图了解这让我离开了哪里。假设我们决定我们所有的持久化数据都应该是 UTF-8 编码的 XML。这是否意味着为了在 UI 组件中显示持久数据,我真的应该执行某种明确的 UTF-8 到 UTF-16 转码过程?

我怀疑我的解释可能需要澄清,所以如果您有任何问题,我会尽力提供。

0 投票
19 回答
339076 浏览

c++ - C++ 将字符串(或 char*)转换为 wstring(或 wchar_t*)

我如何将 s 的内容分配给 ws?

搜索谷歌并使用了一些技术,但他们无法分配确切的内容。内容失真。

0 投票
1 回答
306 浏览

c++ - C++:在两个程序中使用宽字符串时无法通过管道获取数据

我正在尝试在 Mac OS X Snow Leopard 上使用 C++ 中的以下代码通过管道获取外部程序的输出。

但是,没有数据被打印出来。我怀疑问题在于外部程序输出到wcoutand wclog,但我不知道如何处理它。我也尝试使用wstringand fgetws,但这也没有帮助。

我阅读了有关使用boost::iostreams的信息,但又没有运气:

有没有人知道实际问题可能是什么以及如何解决它?如果有人可能会问,外部程序和从管道读取的程序都需要使用wstring,因为我正在处理可能是任何语言的数据,包括中文等。

在此先感谢您提供任何线索!

0 投票
3 回答
18384 浏览

c++ - 使用带有 unicode 文件的 getline 出现问题

更新:感谢@Potatoswatter 和@Jonathan Leffler 的评论 - 令人尴尬的是,我被调试器工具提示发现没有正确显示 wstring 的值 - 但是它仍然对我不太有效,我已经更新了问题以下:

如果我有一个小的多字节文件,我想读入一个字符串,我使用以下技巧 - 我使用例如getline分隔符'\0'

这会读入整个文件,包括换行符。
但是,如果我尝试对宽字符文件做同样的事情,它就不起作用——我wstring只读取第一行。

例如,如果我的 unicode 文件包含由 CRLF 分隔的字符 A 和 B,则十六进制如下所示:

基于使用 '\0' 的多字节文件 getline 读取整个文件的事实,我认为getline( inf2, contents_wide, wchar_t(0) )应该读取整个 unicode 文件。然而事实并非如此——在上面的例子中,我的宽字符串将包含以下两个 wchar_ts:FF FF

(如果我删除 wchar_t(0) 它会按预期在第一行中读取(即FE FF 00 41 00 0D 00

为什么 wchar_t(0) 不能用作分隔 wchar_t 以便 getline 停止00 00(或读取到我想要的文件末尾)?
谢谢