C++ 将字符串拆分为c++; vector Util::split(字符串str,字符分隔符){ 向量内部; stringstream ss(str);//将字符串转换为流。 弦托克; while(getline(ss、tok、分隔符)){ 内部。推回(tok); } 返回内部; }
string str=“k 1” getline(ss,tok,,) 如果我尝试检查返回向量的大小,它是大小1 string str=“k,1,1” 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>
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;
}