将字符串拆分为c ++

时间:2017-03-27 03:01:07

标签: c++ vector whitespace delimiter getline

vector<string> Util::split(string str, char delimiter){
  vector<string> internal;
  stringstream ss(str); // Turn the string into a stream.
  string tok;

  while(getline(ss, tok, delimiter)) {
    internal.push_back(tok);
  }

return internal;
}
  

string str =“k 1 1”;

     

getline(ss,tok,'')

如果我尝试检查返回向量的大小,则为大小为一。

  

string str =“k,1,1”;

     

getline(ss,tok,',')

但是,如果我将分隔符更改为逗号并修改字符串变量tok。

那么大小将是三个

所以白色空间存在问题

我能做些什么来完成这项工作?我几乎整天都在这里。

  int main(){

    Util src;
    int runProgram = 1;
    string input;

    while(runProgram!=0){
        cout << "Input your command to perfrom operation: " << endl;
        cin >> input; // user inputs "k 1 1"

       vector<string>sep=src.split(input, ' ');
       cout << sep.size() << endl; // size is one when it should be 3

    }
 }

1 个答案:

答案 0 :(得分:0)

#include <iostream>
using namespace std;

int delimiter(string & str,char ch){
    unsigned int count=1,size=str.size();
    if(size==0){
            return 0;
    }
    for(unsigned int i=0;i<size;i++){
            if(str[i]==ch){
                    count++;
            }
    }
    return count;
}

int main (int argc,char* array[]){
    string s="1 1 k";

    cout<<delimiter(s,' ') << endl;
}