错误:'to_wstring'不是'std'的成员。

3

我不知道为什么这个无法编译。

std::wstring number = std::to_wstring((long long)another_number);

编译器:gcc 5.1.0
集成开发环境(IDE):codeblocks 17.12

3
你是否正在编译 C++11? - undefined
1
发布实际、准确的错误信息。通过谷歌搜索错误信息是找到答案的好方法。 - undefined
@ΦXocę 웃 Пepeúpa ツ 是的 - undefined
适用于C++11的工作:https://godbolt.org/z/K36PzEY4M - undefined
1
除此之外,gcc 5.1有点过时且不受支持。同样的情况也适用于CodeBlocks 17.12。很有可能这两者在过去的四年里默认使用的设置已经发生了改变。也许当时CodeBlocks并没有默认使用C++ 11。 - undefined
2个回答

4

您需要确保:

您已经包含了字符串头文件:

#include <string>

您正在使用C++11标志进行编译:-std=c++11

$ g++ -std=c++11 your_file.cpp -o your_program

这是官方文档: https://en.cppreference.com/w/cpp/string/basic_string/to_wstring 当然,我希望您的意思是这样的:
 std::wstring number = std::to_wstring((long long)anotherNumber);

替代

std::wstring number = std::to_wstring((long long)number);

因为你不能声明一个名为number的变量并将其初始化为另一个名为number的变量...

这个例子可以正常工作:

#include <iostream>
#include <string>

int main() {
    auto numberX{2020};
    std::wstring f_str = std::to_wstring((long long)numberX);
    std::wcout << f_str;
    
    return 0;
}

在GCC 5.4.0中,默认的标准版本是-std=gnu++98,所以我猜这真的是原因。 - undefined
谢谢。我之前使用std::vector<std::wstring>失败了,但是加入#include <string>就可以了。 - undefined

0

解决方法

std::string temp = std::to_string((long long)number);
std::wstring number_w(temp.begin(), temp.end());

1
GCC 5.1拒绝了这个(正确的)。long long(number)必须写成(long long)number(因为long long由多个单词组成)。 - undefined
@HolyBlackCat 这在Visual Studio中运行得很好。 - undefined
Visual Studio有问题,可以在这里看到(2)。而且(现代的)VS应该支持to_wstring而不需要绕过解决方法... - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接