【问题标题】:Split a larger string and stop if a particular character is found [duplicate]如果找到特定字符,则拆分更大的字符串并停止[重复]
【发布时间】:2015-08-15 13:10:25
【问题描述】:

输入是标准字符串输入。像这样。

“阿南德,拉梅什,苏雷什#阿南德,拉梅什,苏雷什,苏雷什,阿南德”

我想获取 # 之前的所有名称并将其存储在一个数组中。并使用# 后的名称进行一些操作。

如何将# 之前的前三个名称复制到数组中。到目前为止,我已经弄清楚如何复制用逗号分隔的字符串。在找到特定元素后,我找不到停止的解决方案。遇到# 时如何停止。到目前为止,这是我的代码:

void findCombination(string input)
{
   stringstream ss(input); 
   string buffer; 
   vector<string>names;
   int i=0; 

   while(getline(ss,buffer,','))
   {
         names.push_back(buffer); 
   }


   for(int i=0;i<names.size();i++)
           cout << names[i] <<endl; 

   //return NULL; 

}

【问题讨论】:

  • 1.在#上进行拆分。 2.然后在第0个索引上再次根据,进行拆分。
  • @AvinashRaj 我使用了一个向量来获取 # 之前的第一个子字符串。并尝试使用 ss 之前有字符串
  • 尝试第一个 getline()# 作为分隔符

标签: c++ string sstream


【解决方案1】:

有很多方法可以做到这一点。最简单的是:

void findCombination(string input)
{
   string filteredinput(input,0, input.find('#'));  
   stringstream ss(filteredinput);  
   ... // rest of your code unchanged
}

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多