问题标签 [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++ - 将“L”添加到字符串文字可以使其成为宽字符串,但不能添加到变量
该宏#define STR16(x) L ## x
在应用于字符串文字时起作用:
但不是变量:
在这个有用库的第 200 行,有一个错误:
将被翻译成
失败,因为Lp
是一个未声明的标识符。
L
除了将字符串文字添加到字符串变量之外,如何做同样的事情const char *
?
widestring - 查找宽字符串的长度
要查找非宽字符串的长度,我们使用以下strlen
函数:
我的书说的就是使用语法:
但是,我已经尝试了很多方法来做到这一点,但它从来没有奏效:
使用 D 格式说明符:
使用 U 格式说明符
使用类型 SIZE_T 的变量
我们如何找到字符串的长度,以便得到与第一个类似的输出?(最后三个代码都产生错误)
c++ - 我们什么时候应该更喜欢宽字符串?
我正在对一个大型的遗留 MFC 代码库进行现代化改造,其中包含一个名副其实的字符串类型混合体:
- 字符串
- 标准::字符串
- 标准::wstring
- 字符*
- wchar_t*
- _bstr_t
我想在内部对单个字符串类型进行标准化,并且仅在第三方 API(即 COM 或 MFC 函数)绝对需要时才转换为其他类型。我和我的同事正在辩论的问题;我们应该标准化哪种字符串类型?
我更喜欢 C++ 标准字符串之一:std::string 或 std::wstring。我个人倾向于std::string,因为我们不需要宽字符——它是一个内部代码库,没有面向客户的UI(即不需要多语言支持)。“普通”字符串允许我们使用简单、朴素的字符串文字(“Hello world” vs L“Hello world”或_T(“Hello world”))。
编程界有官方立场吗?当面对多种字符串类型时,通常使用什么作为标准的“内部”存储格式?
sql - 尝试选择“宽字符串”类型的字段时出现来自 VBA 的 SQL 查询问题(访问 .mbd 文件)
我正在尝试将一些数据从 .mbd 文件导入 Excel。我可以将整个数据库复制到电子表格中,没有问题。我也可以使用这样的语句
在类型不是 int 或 float 的字段上使用 WHERE 时会出现问题。(我没有 MS Access,但 MDB Plus 告诉我 .mdb 中文本字段的类型称为“Widestring”)
我从 Excel 的 MsgBox 中得到这个:运行时错误'-2147217913 (80040e07)':自动化错误
我一直在谷歌搜索和修补很长一段时间,但我被卡住了。下面是我的 VBA 代码。我不知道这是否与提供商(Microsoft.ACE.OLEDB.12.0)有关,但我尝试了其他一些。我也在考虑 unicode,因为这个数据库来自一个德国测量程序。
multithreading - 为什么我的 Delphi dll 中需要 Sharemem,它只公开一个带有 WideString 参数的函数?
我有一个 dll 和一个用 Delphi 编写的测试应用程序。测试应用程序使用多个线程调用dll导出的函数。导出的函数有一个简单的线程安全实现。运行测试应用程序时会发生各种错误(访问冲突、无效指针操作、堆栈溢出等)或应用程序冻结。在某些情况下,应用程序完成时不会出现错误。
请注意,这些错误仅在使用多个线程时发生(表面)。只有从主线程调用函数时,一切正常。
我发现将 ShareMem 添加到 dll 和应用程序可以阻止所有这些类型的错误。但我不明白为什么。据我所知,只有在 dll 和应用程序之间传递长字符串时才需要 ShareMem。据我所知 WideString 不是一个长字符串。
同样根据这篇文章 ShareMem 不应该是必需的: 为什么 Delphi DLLs 可以使用 WideString 而不使用 ShareMem?
这是dll的来源:
这是测试应用程序:
为什么 ShareMem 可以消除这些错误,还有其他方法可以修复这些错误吗?
我正在使用 Delphi XE2 和 OmniThread 3.07.5。
更新 - 从 VCL 应用程序的按钮的单击事件处理程序运行时出现相同问题 - 如果 DoSomething 在内部使用关键部分,则运行良好 - 如果从 TMyClass 中删除 FText 字段,则不会报告错误,但应用程序会随机冻结
c++ - 无法从“const char *”转换为“LPCTSTR”
我正在尝试将字符串转换为“LPCTSTR”,但是出现以下错误。
错误 :
代码:
另外,尝试过:
但是,打印垃圾值。
c++ - wcout 没有按需要输出
我一直在尝试为一个项目编写 C++ 应用程序,但遇到了这个问题。基本上:
在其他一些文件中:
我有一个函数基本上输出所有内容AllClasses
,问题是 wcout 没有按需要输出。
输出是'Class:Bili',没有别的。程序甚至不尝试输出其他条目而只是挂起。我在使用 G++ 6.3.0 的 Windows 上。而且我没有使用 Windows 的 cmd,我使用的是 mingw 的 bash,所以编码不会有问题(或者不是吗?)。有什么建议吗?
编辑:源代码编码也不是问题,只是检查它是UTF8,VSCode的默认值
编辑:也只是检查了字符串文字是否有问题。
输入一些非 ASCII 字符,如 'ö' 和 'ş',效果很好。宽字符串文字有什么问题?
编辑:给你
使用 G++ 编译:g++ file.cc -O3
此代码仅输出“Bili”。一定是g++搞砸了二进制编码(?),因为输入值wcin
然后输出它们wcout
不会产生任何问题。
delphi - 如何将字号传递给宽字符串?
首先,我很抱歉我不能更好地描述我的问题。
我所拥有的是字号 65025,它是二进制的 0xFE01 或 11111110 00000001。我想将值传递给 wstr Word => 11111110 00000001。
我发现使用类型转换不起作用。
还有一个问题。如果我想添加另一个数字,例如 10000 => 0x03E8,该怎么做。所以在结果中,宽字符串应该引用值 0xFE01 0x03E8。
然后,如何从宽字符串检索相同的数字到单词?
编辑:
我正在给出另一个更简单的示例来说明我想要什么...如果我的字值 49 等于 ASCII 值 1,那么我希望 wstr 为“1”,即二进制 b00110001。我想将位从字号复制到字符串。
winapi - 如何将“宽”字符串读入缓冲区?
Windows API 具有GetWindowTextW
将字符串读入您提供的缓冲区的功能。如何提供这样的缓冲区,然后在 Rust 中从中读取字符串?
PS 与此问题相比,Calling the GetUserName WinAPI function with a mutable string 不会填充字符串, 此问题一般侧重于 Windows 上的字符串读取,而不是特定问题。此外,这个问题有望通过关键字轻松搜索到,回答所要求的内容。
c++ - 尝试使用宽字符串创建类时访问冲突
我正在编写一个应该读取调试日志、解析日志并激活谷歌文本到语音的代码,这将提供有关吐出它的游戏的信息。
该日志具有 UTF-8 编码,因此我在代码中使用宽字符串,代码编译和解析字符串都很好,直到我尝试创建一个类对象。
然后我得到一个访问冲突:
(已编辑)