簡體   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