c++ - 错误 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>
在开始时包含在内。有任何想法吗?
解决方案
像已经提到的其他人一样 - 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,需要包含该标头。
推荐阅读
- batch-file - cmd,批处理 cd 变量空间扩展
- javascript - 来自按钮的 Javascript API 调用未将值返回到隐藏字段
- javascript - 是否可以将 js 字符串转换为日期以将其上传到 SQL 数据库?
- swift - 如何按日期过滤核心数据项?
- node.js - 即使抛出错误,异步函数也会以代码 0 退出
- python - 获取字典Python中具有特定值的所有键
- data-processing - 启动模型创建后不久显示“数据处理失败”的几个模型
- presto - Presto Sql-多个联合语句-语句太大(分析时堆栈溢出)
- c# - Titanium Web 代理 - 无法修改请求正文
- javascript - 赛普拉斯:获取“TypeError”,同时从 Page 对象类函数返回值