首页 > 解决方案 > 错误 C2679:二进制“<<”:未找到采用“std::string_view”类型右侧操作数的运算符(或没有可接受的转换)

问题描述

#include <iostream>
#include <string>

void Log(std::string_view message)
{
    std::cout << message << std::endl;
}

int main()
{
    const char* text = "Test";
    Log(text);
    std::cin.get();
}

我收到了这个错误,并#include <string>在开始时包含在内。有任何想法吗?

标签: c++windowsvisual-studio-2017c++17

解决方案


像已经提到的其他人一样 - std::string_view 在标准标题“string_view”中定义,必须包含 - 否则未定义 string_view。

因为你包含了一些像“string”和“iostream”这样的头文件,它们与 std::string_view 有一些联系,很明显它们至少做了一些 forward_declarations。

在某些实现中,string_view 可能已经包含在其他系统头文件中。例如 std::string_view 可以在标题“string”中实现/定义,并且标题“string_view”可以只包含“string”。

但总的来说,这是库实现的一个实现细节。为了能够使用 std::string_view,需要包含该标头。


推荐阅读