问题标签 [widestring]

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

delphi - 将 WideString 转换为 PWideChar

我使用 Nicomsoft OCR 库在 Delphi 中对图像进行 OCR。它对我的任务有好处,并且它具有 Delphi 单元包装器,因此很容易在 Delphi 中使用它。但是,当我将空字符串作为参数值传递给某些 OCR 函数时,Delphi 调试器会显示“范围错误”消息。我检查了包装器代码,发现 DLL 库函数接受 PWideChars 作为参数,但包装器接受 WideString。在 unit-wrapper 内部有以下转换:

我做了一些研究,发现许多常见问题解答都提供这种转换,例如:http ://www.delphibasics.co.uk/RTL.asp?Name=PWideChar

如果“a”不是空字符串,它可以工作,但对于空字符串,它会导致“Range”错误。即使是空字符串,如何正确获取指向 WideString 变量第一个字符的指针?据我了解,即使字符串为空,它也必须包含零字符,并且 PWideChar 变量必须指向它。

0 投票
0 回答
296 浏览

c++ - 将具有二进制字节序列的 std::string 转换为具有当前语言环境字符集的 std::wstring

目前我两次读取同一个文件,因为我需要两种不同的表示形式:(a)未经任何转换的原始字节序列,(b)将字节转换为当前执行字符集的文本表示形式。基本上,代码如下所示:

显然,代码两次读取同一个文件。我想避免这种情况并直接转换binaryContenttextContent内存。

请注意,这不仅仅是简单charwchar_t转换,因为如果当前语言环境的字符编码locale("")与执行字符编码不同,它也可能涉及真正的字符转换。这样的转换可能虽然是必要的,即使textContent是窄字符串也是如此。

在上面的示例中,第 2 部分中字符转换的魔力发生在template<typename _CharT, typename _Traits> bool basic_filebuf<_CharT, _Traits >::_M_convert_to_external( _CharT* __ibuf, streamsize __ilen )fstream.tcc涉及使用codecvt语言环境的方面。

我希望有一种方法可以wistringstreambinContent对象而不是 a构造一个对象wifsteam,然后wistringstream用适当的语言环境填充 。但这似乎不起作用,因为wistringstream已经期望宽字符的所有构造函数wistringstream似乎也没有实现wifstream.

codecvt有没有比手动使用更好的方法(即更简洁、更不容易出错)的方法?

0 投票
2 回答
5278 浏览

c++ - C++ 在字节向量和 wstring 之间转换

我需要在低级别处理存储在宽字符串中的数据。我可以使用以下方法转换为vectorof :Bytes

但是,我在走另一条路时遇到了麻烦;我对选角不是很熟悉。如何将 a 转换vectorBytesa wstring

0 投票
1 回答
79 浏览

c - ansi 字符串到没有系统 api 的宽字符串

我正在寻找一种将 ANSI 字符串转换为宽字符串的方法,我需要在 CUDA CPU 代码中执行此操作,因此我不能使用像 MultiByteToWideChar 这样的系统 API。我用谷歌搜索了很多,但没有发现从头开始实施这个。

我下载了 reactos 的源代码,并尝试阅读 MultiByteToWideChar 的详细信息。它似乎比我想象的要复杂。

编辑:字符代码不限于0~127,可以是各种语言。但是 utf-8 无关紧要,它不会是 utf-8 格式。

有什么建议吗?

0 投票
2 回答
994 浏览

c++ - Opencv 函数和宽字符串

Opencvcv::imread()take as arguments这样的函数strings。所以,如果我写:

一切都很好,它会加载图像。但是,如果路径包含宽字符(例如希腊字母):

我不能只写:

我已经尝试过(显然失败了)这个:

有什么解决办法吗?还是我只需要离开opencv并使用其他东西?

0 投票
1 回答
122 浏览

c - 在 C 中正确操作宽字符/字符串

OS X 优胜美地 10.10.5 XCode 7.2

我整天都在阅读和试验关于 C 中的宽字符/字符串,但我仍然无法让它工作。

我正在尝试读取仅由宽字符组成的文件,如下所示:

我想一次只读取一个字符,然后立即写入另一个文件。

这是输出:

我可以理解我的问题可能与我如何读取数据有关,但如果我考虑替代方案,我会完全陷入困境。

  • 我试过使用fgetws但我无法将字符彼此分开;
  • 我曾尝试将fwscanf%ls一起使用,但最终得到了一个空文件;
  • 我注意到 MAC OS 不提供fgetwc实现,即使相关手册页提到它,AFAIK getwc应该是 fgetwc 的宏实现
  • 不确定这是否重要,但我使用touch命令创建了源文件;

你能帮助我吗?

PS:也非常感谢有关该论点的进一步阅读的链接。关于此事的文档非常稀缺。


XCode 问题

这个问题最初让我认为Jonathan Leffler解决方案不起作用。事实上,如果我通过 XCodeCMD+R或通过Terminal运行代码,它会产生不同的输出。

AFAIK问题一定是XCode在运行时使用的某种属性/属性/设置,因为硬编码目标参数仍然会产生错误的输出。

为了清楚起见,我为我的代码提供了导出的方案:

0 投票
1 回答
1064 浏览

java - 如何在 Java 中传递宽字符串调用 user32 lib 中的 MessageBoxW 函数

我目前正在努力MessageBoxW在 Java 中使用该函数。我成功地调用了 user32 库并使用了该MessageBoxA函数。下面是我的代码:

我环顾四周,找不到任何确凿的答案,但有些事情告诉我,我需要更复杂的编码来解决这个问题。对此的任何帮助将不胜感激。

0 投票
1 回答
560 浏览

c++ - va_args 打破 XCode 中的宽字符串函数 (swprintf)

仅在 Xcode 中(visual studio 很好),如果您尝试使用 va_args 将其放入包装函数中,我会看到 swprintf 中断。

简化示例:

任何帮助表示赞赏,这真是太麻烦了。我假设问题出在 XCode 的一些怪癖上。

我已经按照这个问题的建议弄乱了区域设置和文件属性:swprintf 在 xcode 中出现 unicode 字符失败,但在 Visual Studio 中工作但没有产生任何变化,它看起来像一个单独的问题。

谢谢。

0 投票
3 回答
1165 浏览

c - 使用标准库将 char 转换为 wchar_t?

我有一个函数,它需要一个wchar_t数组作为参数。我不知道一个标准库函数可以从 char 转换为wchar_t所以我写了一个快速的脏函数,但我想要一个没有错误和未定义行为的可靠解决方案。标准库是否具有进行这种转换的功能?

我的代码:

0 投票
1 回答
1877 浏览

rust - 我应该在 FFI 的上下文中传递可变引用还是转移变量的所有权?

我有一个通过 C FFI(通过 winapi-rs)利用 Windows API 的程序。其中一个函数需要一个指向字符串的指针作为输出参数。该函数会将其结果存储到此字符串中。我正在WideCString为这个字符串使用一个类型的变量。

我可以“只是”将一个可变引用传递给一个字符串引用到这个函数(在一个不安全的块内),还是我应该使用类似的功能.into_raw(),并且.from_raw()也将变量的所有权转移到 C 函数?

两个版本都可以编译和工作,但我想知道我是否以直接方式购买了任何缺点。

这是我的代码中使用.into_rawand的相关行.from_raw

MSDN中对这个参数的描述说:

指向变量的指针,该变量接收指向以null 结尾的安全描述符字符串的指针。有关字符串格式的说明,请参阅安全描述符字符串格式。要释放返回的缓冲区,请调用LocalFree函数。

我期待函数改变变量的值。这不是 - 根据定义 - 意味着我正在转移所有权吗?