问题标签 [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.
c++ - 将宽字符串或宽字符数组转换为简单字符数组的最简单方法?
我的变量在一个宽字符串的特定内部实现中,但我可以很容易地将它变成一个宽字符数组。问题是我需要将它提供给只接受字符数组的库函数。
所以我最终得到了这样的结果:
那么,有没有一种简单的方法,或者我应该逐个字符地手动完成?
c - fwprintf 不输出宽字符
我想将宽字符输出到文件中,fwprintf
但不这样做,即使它被描述为这样做。示例代码:
之后我的文件“wideTestFile.txt”正好包含 5 个字节:31 32 33 34 35
根据我的十六进制转储实用程序。
我怀疑当前语言环境存在一些问题,可能会fwprintf
调用 on fwprintf_l
,它将语言环境作为附加参数。
我一直在阅读如何使用最后一次调用,但我无法理解我需要作为语言环境传递的内容。文档对此相当模糊(或者我可能无法理解)。
任何解释为什么fwprintf
不像记录的那样表现?以及使用的任何示例fwprintf_l
?
非常感谢,
京东
这适用于 Mac OS X 10.8.2 下的 Xcode 4.5.1,目标是来自 Objective-C 代码的 iOS 6.0。但这些都不重要。
c++ - C++ 中的 L 前缀究竟是什么?
我了解它的作用:将字符串文字指定为const wchar_t *
(宽字符串)而不是const char *
(普通旧字符),但它实际上是如何定义的?
它是某种宏吗?它是 GCC 编译器的运算符吗?它是什么?
c++ - 模板 char/wchar_t、string/wstring、cout/wcout、regexp/wregex(或任何可能的解决方法)
我正在处理char
和wchar_t
。
我正在编写一个辅助字符串类,它将一些正则表达式(带有提升)添加到一些字符串,但我同时拥有string
和wstring
. 现在我有 2 个函数,每个函数都有重复的代码。
它有效,但我正在寻找一些优雅的方法(模板?一些 oop 魔术?函数指针?)来删除重复的代码。
delphi - 如何在 Delphi 中对转义的宽字符串进行转义?
我的一些宽字符串包含用 转义的字符例如:宽字符串源看起来像:'   '
转换后的结果必须是 ' '
(3 个空格)。
函数应该看起来像
注意:1)我使用的是 Delphi 7。
2) 这个宽字符串是 SOAP 响应而不是 HTML 的一部分。
3) 通常,此方法应接受字母数字字符作为宽字符串的一部分:示例输入 :='be @' 结果 := 'be @'
c++ - 如何在 C++ 中将单字节字符串转换为宽字符串?
我知道编码,并且输入字符串是 100% 单字节,没有像 utf 等花哨的编码。我想要的只是根据已知的编码将它转换为 wchar_t* 或 wstring。使用什么功能?btowc()
然后循环?也许字符串对象有一些有用的东西。有很多示例,但所有示例都是针对“多字节”或带有 btowc() 的花哨循环,它们仅显示如何在屏幕上显示确实此功能正在工作的输出,我还没有看到任何严肃的示例如何处理这样的缓冲区情况下,宽字符总是比单个字符字符串大 2 倍吗?
c++ - 尝试初始化 wregex 对象时缩小 boost 的 regex_traits_defaults.hpp 中的转换警告
第一行编译正常。第二个也产生工作EXE,但另外我得到这个大错误:
代码 :
提升:http: //sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z
c++ - 如何使用 wcout 显示 L"أَبْجَدِيَّة عَرَبِيَّة中文"?
我想使用 wcout 显示混有中文的阿拉伯语消息。
下面的代码是可以的:
但是,以下代码不起作用:
我认为在采用 unicode 之后应该弃用代码页的概念。
Q1。wout显示这样一个文本的机制是什么?
Q2。为什么 Windows 作为基于 unicode 的操作系统,不支持在其控制台窗口中输出 unicode 字符?
delphi - Delphi 7调用DelphiXE2 dll获取损坏的宽字符串
我有一个 Delphi 7 应用程序,它需要调用一个对于可用的 SOAP 导入器来说太新的 SOAP API。我很满意 D7 调用 SOAP API 需要付出太多努力才值得。但我也有 Delphi XE2,它可以导入 SOAP 并非常愉快地调用它。所以我在 XE2 中编写了一个简单的 dll 包装器,它公开了soap接口的必要部分。我可以从 XE 程序中调用 dll。
在 Delphi7 中,我从 XE 中获取了 SOAP API 导入文件,去掉了 {$SCOPED_ENUMS ON} 定义和调用不可用 SOAP 包装器的初始化部分,并在整个过程中将字符串更改为宽字符串。编译。我正在使用启用了 ShareMM 的 FastMM 来进行字符串传递工作并避免进行所有 stdcall。
我尝试这样做的原因是,如果它有效,它将使 SOAP shim 非常易于编码和维护,因为 90% 的代码是由 XE2 SOAP 导入器生成的,这意味着当我们将 D7 应用程序移至现代 Delphi 代码将基本保持不变。
但是当我运行它时,我得到了奇怪的字符串(以及随之而来的访问冲突)。我有一些不使用 SOAP 代码的简单函数来使问题更加明显。
将 Delphi7 exe 中的宽字符串传递到 DelphiXE2 dll 中,字符串长度加倍(根据 Length() 函数),但没有匹配的数据转换。因此,D7 中的宽字符串“123”在 XE2 中变为“1234....”,其中 .... 是堆栈上碰巧出现的任何垃圾。被视为字节数组都具有预期的半零字节。
将宽字符串从 XE2 dll 传递回 D7 我得到了镜像效果 - 字符串长度减半并且字符串被简单地截断(“1234”变为“12”)。
我正在粘贴代码,因为我知道你会要求它。
在 Delphi XE2 中,我正在导出这些函数:
在德尔福 7 中:
我可以从任一端运行,使用 D7 可执行文件作为主机应用程序来调试 dll。在调试器中检查参数和返回值会得到上述结果。
烦人的是,如果我在 delphi7 中将导入声明为字符串,我会得到正确的长度但无效的数据。如图所示,当我尝试返回时,我得到了有效的数据、错误的长度和访问冲突。
将其全部设置为 stdcall 不会改变行为。
显而易见的解决方案是只编写简单的包装函数,以准确地公开我现在需要的功能。我可以这样做,但我更喜欢上述狡猾的方式。
c++ - C++ 使用 delphi DLL
我无法使用在delphi中开发的dll的功能。我在类型转换方面遇到了一些困难。
这是我要调用 DLL 的函数:
我的 C++ 代码是这样的:
我无法使其工作的问题。我不知道哪种类型与 Delphi WideString 和 Cardinal 兼容。
谁来帮帮我
编辑:
这是我要调用 DLL 的函数:
修改后的代码是这样的: