Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在将应用程序从 Windows 移植到 Linux。除了数据库之外,我已经设法使一切正常工作。每当我打电话sqlite3_column_text16()时,我都会得到一个缺少大多数字符的字符串。我不知道这种行为从何而来,因为它在 Windows 上运行得无可挑剔。
sqlite3_column_text16()
我没有做任何特别的事情,只是
wstring a(static_cast<wchar_t const *>(sqlite3_column_text16(stmt, 2)));
谢谢你。
Unicode 字符可以超过 16 位,因此除 Windows 之外的所有操作系统都使用 32 位类型的wchar_t.
wchar_t
您可以从 UTF-16 转换为 UTF-32(注意代理对),但取决于您的程序的设计方式,在任何地方都使用 UTF-8 可能更容易。