问题标签 [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.
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 变量必须指向它。
c++ - 将具有二进制字节序列的 std::string 转换为具有当前语言环境字符集的 std::wstring
目前我两次读取同一个文件,因为我需要两种不同的表示形式:(a)未经任何转换的原始字节序列,(b)将字节转换为当前执行字符集的文本表示形式。基本上,代码如下所示:
显然,代码两次读取同一个文件。我想避免这种情况并直接转换binaryContent
为textContent
内存。
请注意,这不仅仅是简单char
的wchar_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
语言环境的方面。
我希望有一种方法可以wistringstream
从binContent
对象而不是 a构造一个对象wifsteam
,然后wistringstream
用适当的语言环境填充 。但这似乎不起作用,因为wistringstream
已经期望宽字符的所有构造函数wistringstream
似乎也没有实现wifstream
.
codecvt
有没有比手动使用更好的方法(即更简洁、更不容易出错)的方法?
c++ - C++ 在字节向量和 wstring 之间转换
我需要在低级别处理存储在宽字符串中的数据。我可以使用以下方法转换为vector
of :Bytes
但是,我在走另一条路时遇到了麻烦;我对选角不是很熟悉。如何将 a 转换vector
为Bytes
a wstring
?
c - ansi 字符串到没有系统 api 的宽字符串
我正在寻找一种将 ANSI 字符串转换为宽字符串的方法,我需要在 CUDA CPU 代码中执行此操作,因此我不能使用像 MultiByteToWideChar 这样的系统 API。我用谷歌搜索了很多,但没有发现从头开始实施这个。
我下载了 reactos 的源代码,并尝试阅读 MultiByteToWideChar 的详细信息。它似乎比我想象的要复杂。
编辑:字符代码不限于0~127,可以是各种语言。但是 utf-8 无关紧要,它不会是 utf-8 格式。
有什么建议吗?
c++ - Opencv 函数和宽字符串
Opencv
像cv::imread()
take as arguments这样的函数strings
。所以,如果我写:
一切都很好,它会加载图像。但是,如果路径包含宽字符(例如希腊字母):
我不能只写:
我已经尝试过(显然失败了)这个:
有什么解决办法吗?还是我只需要离开opencv
并使用其他东西?
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在运行时使用的某种属性/属性/设置,因为硬编码源和目标参数仍然会产生错误的输出。
为了清楚起见,我为我的代码提供了导出的方案:
java - 如何在 Java 中传递宽字符串调用 user32 lib 中的 MessageBoxW 函数
我目前正在努力MessageBoxW
在 Java 中使用该函数。我成功地调用了 user32 库并使用了该MessageBoxA
函数。下面是我的代码:
我环顾四周,找不到任何确凿的答案,但有些事情告诉我,我需要更复杂的编码来解决这个问题。对此的任何帮助将不胜感激。
c++ - va_args 打破 XCode 中的宽字符串函数 (swprintf)
仅在 Xcode 中(visual studio 很好),如果您尝试使用 va_args 将其放入包装函数中,我会看到 swprintf 中断。
简化示例:
任何帮助表示赞赏,这真是太麻烦了。我假设问题出在 XCode 的一些怪癖上。
我已经按照这个问题的建议弄乱了区域设置和文件属性:swprintf 在 xcode 中出现 unicode 字符失败,但在 Visual Studio 中工作但没有产生任何变化,它看起来像一个单独的问题。
谢谢。
c - 使用标准库将 char 转换为 wchar_t?
我有一个函数,它需要一个wchar_t
数组作为参数。我不知道一个标准库函数可以从 char 转换为wchar_t
所以我写了一个快速的脏函数,但我想要一个没有错误和未定义行为的可靠解决方案。标准库是否具有进行这种转换的功能?
我的代码:
rust - 我应该在 FFI 的上下文中传递可变引用还是转移变量的所有权?
我有一个通过 C FFI(通过 winapi-rs)利用 Windows API 的程序。其中一个函数需要一个指向字符串的指针作为输出参数。该函数会将其结果存储到此字符串中。我正在WideCString
为这个字符串使用一个类型的变量。
我可以“只是”将一个可变引用传递给一个字符串引用到这个函数(在一个不安全的块内),还是我应该使用类似的功能.into_raw()
,并且.from_raw()
也将变量的所有权转移到 C 函数?
两个版本都可以编译和工作,但我想知道我是否以直接方式购买了任何缺点。
这是我的代码中使用.into_raw
and的相关行.from_raw
。
MSDN中对这个参数的描述说:
指向变量的指针,该变量接收指向以null 结尾的安全描述符字符串的指针。有关字符串格式的说明,请参阅安全描述符字符串格式。要释放返回的缓冲区,请调用LocalFree函数。
我期待函数改变变量的值。这不是 - 根据定义 - 意味着我正在转移所有权吗?