c++ - 有没有一种方法可以在不复制数据的情况下从 string_view 创建字符串流?
问题描述
我认为这是一个非常直截了当的问题。我特别想使用std::get_time
,但它需要某种流才能使用。我在 a 中传递数据,string_view
并希望避免复制它只是为了解析日期。
解决方案
您可以使用 Boost.Iostreams 库轻松做到这一点:
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/stream.hpp>
#include <iostream>
#include <string>
int main() {
std::string_view buf{"hello\n"};
boost::iostreams::stream<boost::iostreams::basic_array_source<char>> stream(buf.begin(), buf.size());
std::string s;
stream >> s;
std::cout << s << '\n';
}
你应该能够做到这一点,std::stringstream
但std::basic_stringbuf<CharT,Traits,Allocator>::setbuf
C++ 标准搞砸了它的要求:
[of
setbuf
] 的效果是实现定义的:一些实现什么都不做,而一些实现清除std::string
当前用作缓冲区的成员并开始使用用户提供的大小为 的字符数组n
,其第一个元素由 指向s
,作为缓冲区和输入/输出字符序列。
推荐阅读
- pytorch - TensorboardX:张量板:找不到命令
- javascript - 为什么我的 d3 数据中的第一个元素没有更新?
- ruby-on-rails-3 - 安装 aws-sdk-3 后无法启动 Rails 服务器
- angular - 如何将对象从 Angular 发送到 Asp.net Web Api?
- c# - 将此 C++ 浮点数组移植到 C#
- wix - Wix 安装程序在安装时删除了不同的产品
- asp.net-mvc - Http 错误 500 Azure 网站部署问题
- pcfdev - 由于缺少 KVM,无法在 Ubuntu 上启动 PCF Dev (cf dev start)
- python - 将文件从 S3 读入 Python 内存
- php - 如何将html标签放入php序列化数组中