Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串拆分为c++; vector Util::split(字符串str,字符分隔符){ 向量内部; stringstream ss(str);//将字符串转换为流。 弦托克; while(getline(ss、tok、分隔符)){ 内部。推回(tok); } 返回内部; }_C++_Vector_Whitespace_Delimiter_Getline - Fatal编程技术网

C++ 将字符串拆分为c++; vector Util::split(字符串str,字符分隔符){ 向量内部; stringstream ss(str);//将字符串转换为流。 弦托克; while(getline(ss、tok、分隔符)){ 内部。推回(tok); } 返回内部; }

C++ 将字符串拆分为c++; vector Util::split(字符串str,字符分隔符){ 向量内部; stringstream ss(str);//将字符串转换为流。 弦托克; while(getline(ss、tok、分隔符)){ 内部。推回(tok); } 返回内部; },c++,vector,whitespace,delimiter,getline,C++,Vector,Whitespace,Delimiter,Getline,string str=“k 1” getline(ss,tok,,) 如果我尝试检查返回向量的大小,它是大小1 string str=“k,1,1” getline(ss,tok,,) 但是,如果我将分隔符更改为逗号并修改字符串变量tok 那么大小将是三个 因此,空格有一个问题 我能做些什么来让它工作?我几乎一整天都在做这件事 vector<string> Util::split(string str, char delimiter){ vector<string>

string str=“k 1”

getline(ss,tok,,)

如果我尝试检查返回向量的大小,它是大小1

string str=“k,1,1”

getline(ss,tok,,)

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

那么大小将是三个

因此,空格有一个问题

我能做些什么来让它工作?我几乎一整天都在做这件事

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;
}
intmain(){
Util-src;
int runProgram=1;
字符串输入;
while(runProgram!=0){
cout-input;//用户输入“k 1”
vectorsep=src.split(输入“”);
不能包含
使用名称空间std;
整型分隔符(字符串&str,字符ch){
无符号整数计数=1,大小=str.size();
如果(大小==0){
返回0;
}

对于(unsigned int i=0;所显示的代码无论放入
tok
中的是什么都不起作用,因为
stringstream
是由另一个名为
str
的神秘变量构造而成的。根据描述,在我看来,所显示的代码不是真实代码,而是幻想代码。真实问题的真实答案需要real代码,而不是幻想代码。你是对的,我错了,你的代码如图所示。请提供一个实际显示问题的示例。我尝试了它,它使用了空格分隔符。我使用了编译器clang C++11。
  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

    }
 }
#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;
}