问题标签 [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 投票
4 回答
3210 浏览

c++ - Windows 上 C++ 中 Unicode 中不区分大小写的搜索

我昨天问了一个类似的问题,但认识到我需要以不同的方式重新调整它。

简而言之:在 Windows 上的 C++ 中,当字符串为 unicode 格式(宽字符、wchar_t)并且我不知道字符串的语言时,如何对字符串(在另一个字符串内)进行不区分大小写的搜索. 我只想知道大海捞针是否存在。针的位置与我无关。

背景:我有一个包含大量电子邮件正文的存储库。消息使用不同的语言(日语、德语、俄语、芬兰语;您可以命名)。所有数据都是 Unicode 格式,我将它加载到我的 C++ 应用程序中的宽字符串 (wchar_t) 中(主体已被 MIME 解码,因此在我的调试器中我可以看到实际的日文、德文字符)。我不知道邮件的语言,因为电子邮件不包含该详细信息,而且单个电子邮件正文可能包含来自多种语言的字符。

我正在寻找类似 wcsstr 的东西,但能够以不区分大小写的方式进行搜索。我知道在不知道文本语言的情况下,不可能 100% 正确地从大写字母转换为小写字母。我想要一个在 99% 的情况下都可行的解决方案。

我正在使用带有 C++、STL 和 Boost 的 Visual Studio 2008。

0 投票
2 回答
5116 浏览

c++ - 将宽字符串文字与字符串宏相结合

我有一个字符串的宏,如下所示:

现在我想通过执行以下操作使用此宏构造一个宽字符串:

但是,这会产生“连接不匹配的字符串”编译错误。

有没有办法将 APPNAME 宏转换为宽字符串文字?

0 投票
4 回答
7963 浏览

c++ - 如何将 System::WideString 转换为 char* ,反之亦然?

我有一种情况,我需要将 achar*与 a进行比较WideString
如何在 C++ 中将 WideString 转换为 char*?

0 投票
3 回答
291 浏览

visual-c++ - Visual C 2008 Express 中的 wctype 在哪里?

我正在使用 Visual C 2008 Express 将第 3 方软件从 Linux 移植到 Windows。

我只有函数'wctype'有问题。它在 %VCDIR%/include/wctype.h 文件中声明如下:

但是,当尝试链接 a 时出现以下错误:

测试代码如下:

正如您在错误消息中看到的,代码编译正常,但无法链接。

该怎么办?我不是这个软件的开发者,所以我不想用另一个替换`wctype'函数,因为它会混淆原始开发者。

谢谢你的耐心。

PS 我还用 Dependency Walker 查看了 MSVCRT90.DLL 文件的导入表,并且没有 `wctype' 函数。

0 投票
6 回答
1830 浏览

delphi - Delphi,字符串与宽字符串内存使用问题,非 unicode VCL (D7)

我正在存储一些带有 WideString 参数的类来描述它们(如名称、描述和其他一些)。现在,如果我将所有这些 WideStrings 更改为简单的“字符串”(实际上我使用的是别名,所以我只需要更改一行),内存使用量大约会增加 5%!比以前...这怎么可能,因为字符串的每个字符都比 WideChar 小两倍?

提前致谢!

米。

0 投票
3 回答
747 浏览

delphi - Delphi中的宽字符串兼容性问题

在使用 Delphi 2006 构建的 dll 中

在使用 Delphi 2010 构建的可执行文件中

进入 dll,aPath = '123'。事实上,我传递的任何字符串都会被准确地切成两半。

1.) 为什么我的字面量减半?2.) 我该如何解决?

0 投票
4 回答
4049 浏览

c++ - 我们可以将 wmain() 与 Unix 编译器一起使用,还是只能在 Windows 上工作?

我们可以将该wmain()函数与 Unix 编译器一起使用,还是仅适用于 Windows?

0 投票
2 回答
2371 浏览

delphi - Delphi 2010 宽函数与字符串函数

我们目前正在将 Delphi 2007 项目转换为 Delphi 2010。我们已经在使用 Unicode(通过 WideStrings 和 TNT Unicode Controls)。

我期待用它们的等效函数(例如 UpperCase)替换所有 Wide 函数,例如 WideUpperCase,但它们的工作方式不同。例如,WideUpperCase 与 UpperCase 的工作方式不同。WideUpperCase 正确地将 Campañas 大写,但 UpperCase 将 ñ 保留为小写。

还有其他我应该注意的差异吗?例如,WideFormat 和 Format 的工作方式相同吗?

谢谢

0 投票
4 回答
4452 浏览

c++ - GCC 下的 2 字节 (UCS-2) 宽字符串

在将我的 Visual C++ 项目移植到 GCC 时,我发现 wchar_t 数据类型默认为 4 字节 UTF-32。我可以使用编译器选项来覆盖它,但随后 RTL 的整个 wcs*(wcslen、wcscmp 等)部分将变得不可用,因为它假定为 4 字节宽的字符串。

现在,我已经从头开始重新实现了 5-6 个这些函数并#defined 我的实现。但是有没有更优雅的选择 - 比如说,一个 2 字节 wchar-t 的 GCC RTL 构建静静地坐在某个地方,等待被链接?

我所追求的 GCC 的特定风格是 Mac OS X 上的 Xcode、Cygwin 以及 Debian Linux Etch 附带的一种。

0 投票
4 回答
5157 浏览

c++ - sprintf 何时以及为什么会失败?

我正在使用 swprintf 将字符串构建到缓冲区中(使用循环等)。

如果在测试期间断言从未命中,我可以确定它永远不会在实时代码中命中吗?也就是说,我是否需要检查 nWritten < 0 并处理它,还是我可以安全地假设不会有问题?

什么情况下可以返回-1?文档或多或少只是说明“如果功能失败”。在一个地方我读到如果它不能匹配参数(即格式化字符串到可变参数)它将失败,但这并不让我担心。

在这种情况下,我也不担心缓冲区溢出——我知道缓冲区足够大。