c++ - 字符串流的用户定义文字
问题描述
std::stringstream
我写了一个在出现后缀时返回的运算符函数_f
。
#include <iostream>
#include <sstream>
#include <utility>
static std::stringstream&& operator "" _f(const char* const s, const size_t _) {
return std::move(std::stringstream() << s);
}
int main() {
const auto s = "Number: "_f << 10 << '\n';
std::cout << s.str();
return 0;
}
但是,当我运行它时,我得到一个运行时异常:“访问冲突读取位置...”。
你能告诉我,我的代码中的错误在哪里?
解决方案
operator
返回对函数内部临时对象的引用,std::stringstream
从而产生悬空引用。你应该std::stringstream
直接返回。
static std::stringstream operator "" _f(const char* const s, const size_t _) {
return std::stringstream() << s;
}
推荐阅读
- powershell - 命令中的 Powershell 对象字段
- javascript - Javafx:如何定位场景的元素
- java - 重绘 Canvas 的内容
- python - 自动粘贴(Ctrl + v)而不是使用 pyautogui?
- javascript - jQuery 没有执行 .then()
- swiftui - .environmentObject() 视图运算符与@EnvironmentObject 的目的是什么?
- c# - 使用 System.Text.Json 一次读取一条记录
- firebase - 尝试在使用 Flutter 从 Firestore 加载数据时实现加载微调器
- symfony - 我们可以在 Symfony 4.3 中从 Rabbitmq Consumer 发送事件吗?
- javascript - 通过导出/导入在 React 组件之间传递数据