c++ - 如何使用带有除空格以外的其他分隔符的 istringstream 拆分字符串?

标签 c++

以下技巧使用 istringstream 来分割带有空格的字符串。

int main() {
    string sentence("Cpp is fun");
    istringstream in(sentence);
    vector<string> vec = vector<string>(istream_iterator<string>(in), istream_iterator<string>());
    return 0;
}

有没有类似的技巧来用 any 分隔符分割字符串?例如,“Cpp|is|fun”中的|

最佳答案

一般来说,istringstream 方法速度慢/效率低,并且至少需要与字符串本身一样多的内存(当您有一个非常大的字符串时会发生什么?)C++ String Toolkit Library (StrTk)对您的问题有以下解决方案:

#include <string>
#include <vector>
#include <deque>
#include "strtk.hpp"
int main()
{
   std::string sentence1( "Cpp is fun" );
   std::vector<std::string> vec;
   strtk::parse(sentence1," ",vec);

   std::string sentence2( "Cpp,is|fun" );
   std::deque<std::string> deq;
   strtk::parse(sentence2,"|,",deq);

   return 0;
}

更多示例请见 Here

关于c++ - 如何使用带有除空格以外的其他分隔符的 istringstream 拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533652/

相关文章:

c++ - 阿特金筛在非常高的限度下发生故障

c++ - 此 OID netsnmp 当前不存在此类实例

c++ - 函数重载和类型转换解析

c++ - 将 std::vector 序列化为 Boost 二进制存档时出现数据相关故障

c++ - 如何将时间和日期转换为C或C++中的句子格式?

c++ - CV4.1 : Failed Assertion in function detectAndCompute level>=0

c++ - 堆栈动态和堆栈动态数组

c++ - Linux LibdvbV5 EIT 抢夺 - 天数不够

c++ - 将非左值作为 const 引用参数传递。 temp 是在本地作用域还是在调用者作用域中创建的?

c++ - 使用类成员作为成员函数的默认参数