gpt4 book ai didi

c++ - gcc/c++ v2.96 上不存在 wstring

转载 作者:行者123 更新时间:2023-11-28 02:35:45 25 4
gpt4 key购买 nike

我有一个在实际 Gcc/c++ 编译器中编译良好的 linux 应用程序。

我需要在一个非常老的编译器(gcc/c++ 2.96 版)中编译它。问题是 wstring 不存在。

我在所有系统 header 中查找 wstring。我在 g++-3\string 中找到了它,但它被注释掉了。

我试着做了一个简单的 Hello world 应用程序来测试它。

我输入了 typedef wstring,但是当我执行 wstring 对象的 c_str() 时,编译器说它无法将 const char * 转换为 const wchar_t *。为什么 c_str() 返回 char 而不是 wchar?我该如何解决?

代码如下:

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream.h>
#include <string>

typedef basic_string<wchar_t> wstring;

int main(int argc, char *argv[])
{

char pHW[100];
wstring kk = L"Hello World!";


wcstombs(pHW,kk.c_str(),100); //kk.c_str() returns char * instead wchar_t

cout << "Text:[" << pHW << "]" << endl;

return EXIT_SUCCESS;
}

最佳答案

如果需要std::wstring如果旧的编译器/库没有实现 C++ 标准并且不提供它,您需要自己实现一个足够的版本。根据您的需要,实现一个版本可能不会太复杂,例如,根据 std::vector<wchar_t> .大多数std::basic_string<...>使用算法可以很容易地实现功能。

就是说,如果您希望让 iostream 为 wchar_t 工作几乎所有的希望都破灭了!如果我真的必须做那样的事情,我可能会发现 my standard library实现并尝试让它在这个 gcc 上编译。它不会包含 std::basic_string<...> 的实现如果我没记错的话,它会包含 wchar_t 的流.

个人认为wchar_t以及与之相关的任何内容(以及 char16_tchar32_t )都是错误的方向:在 std::string 中使用 UTF-8并为此定义必要的操作。 wchar_t没有解决任何问题,但确实创造了没有它就不存在的新问题(而且,是的,我知道微软被 Unicode 欺骗了,它 promise 在任何地方使用它——让以 Windows 为目标的程序员受苦)。

关于c++ - gcc/c++ v2.96 上不存在 wstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com