C++ 社区建议不要使用 using namespace std;
。但是假设您想使用字符串文字,例如auto s = "dummy"s;
.
不使用 using namespace std;
导致编译失败。解决办法是什么?
最佳答案
operator""s
位于命名空间 std
的 2 个内联命名空间中。基本上是这样的:
namespace std
{
inline namespace literals
{
inline namespace string_literals
{
//operator""s implementation
//...
}
}
}
因此,要仅获取字符串文字,请使用 using namespace std::string_literals;
。
或者,如果你想包含 every 文字 - 包括字符串文字(如 s
秒,如果你包含 chrono
,.. .): 使用命名空间 std::literals;
.
根据情况,你也可以考虑使用:
using std::string_literals::operator""s;
而不是从该命名空间导入每个名称。
请注意,您仍然不应在全局级别将其包含在标题中 (但您可以在您控制的内联或成员函数或命名空间中执行此操作)
关于c++ - 使用字符串文字而不使用命名空间 std,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950008/