繁体   English   中英

迭代 std::string 中的行而不复制它

[英]Iterate over lines in std::string without copying it

我有一个大字符串,可以是 50-200 MB。 我想遍历字符串中的行。 我搜索的大多数解决方案都使用std::getline ,其中一些需要 Boost 库。 我不使用它们是因为,例如,它们要求我复制字符串以创建字符串流。

我真的需要使用它们吗? 为什么我不应该简单地使用std::stringfind来搜索\\n并读取子字符串? 这是一个糟糕的解决方案吗?

  1. 不,您不需要使用std::getline或 Boost。
  2. 是的,您可以使用string.find() 或者,您可以从源代码读取字符串并在找到分隔符时构建子字符串列表。
  3. 不,如果它能让你得到答案,那就没问题了。 除非您有特定的性能要求、RAM 限制或您未提及的其他要求,否则这不是一个糟糕的解决方案。

此外,您可以在 C++17 中使用std::string_view 因此,您可以将整个输入放入一个字符串中,然后创建引用原始字符串的廉价子字符串对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM