2017-03-27 52 views
-1
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”;将字符串拆分为C++中的单独变量

函数getline(β,TOK,'“)

如果我尝试检查大小为返回向量是大小ONE。

string str =“k,1,1”;

函数getline(β,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 

    } 
} 
+0

所显示的代码将不能不管工作怎样被投入'tok',因为'stringstream'会从名为'str'一些其他的,神秘的变量构成。根据描述,它看起来像我所示的代码不是真实代码,而是幻想代码。一个真正的问题的真实答案将需要真正的代码,而不是幻想代码。 –

+0

你是对的我的错误 – Marke

+0

你的代码如现在所示[完美地工作](http://coliru.stacked-crooked.com/a/062c49efb0278e67)。请提供实际存在问题的[mcve]。 – zett42

回答

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; 
} 
相关问题