string_view是C++ Library Fundamentals TS(N3921)中添加到C++ 17中的一个提议特性
据我所知,它是一种代表某种字符串"概念"的类型,它是任何类型的容器的视图,可以存储可视为字符串的东西.
const std::string&参数类型应该
变成string_view吗?string_view需要考虑吗?Boost提供了两种不同的实现string_view,它们将成为C++ 17的一部分:
boost::string_ref 在 utility/string_ref.hppboost::string_view 在 core/string_view.hpp这些之间有什么重大差异吗?哪个应该是首选的?
注意:我注意到在Boost 1.61中,boost :: log已经弃用了string_ref而支持string_view; 也许这是一个指标?(http://www.boost.org/users/history/version_1_61_0.html)
我正在构建一个文本解析器,std::string用作字符串的核心存储.
我知道这不是最优的,编译器内部的解析器使用优化方法.在我的项目中,我不介意失去一些性能以换取更清晰和更容易的维护.
一开始我在内存中读取了一个巨大的文本,然后我扫描每个字符以构建一组有序的标记,它是一个简单的词法分析器.目前我std::string用来表示令牌的文本,但我想通过使用引用/指针到原始文本来改进这一点.
根据我的阅读,返回并保持迭代器是一种不好的做法,引用std::string内部缓冲区也是一种不好的做法.
关于如何以"干净"的方式实现这一目标的任何建议?