gpt4 book ai didi

c++ - 用逗号分割字符串

转载 作者:行者123 更新时间:2023-12-01 14:20:17 25 4
gpt4 key购买 nike

我正在尝试用逗号拆分一个字符串并填充一个 vector 。当前代码适用于第一个索引,但是,对于下一次迭代,迭代器会忽略逗号,但会理解后面的那个。谁能告诉我这是为什么?

    getline(file,last_line);
string Last_l = string(last_line);
cout<< "String Lastline worked "<< Last_l <<endl;
int end = 0;
int start = 0;
vector<string> linetest{};

for(char &ii : Last_l){
if( ii != ','){
end++;
}
else{
linetest.push_back(Last_l.substr(start,end));
// Disp(linetest);
cout<< Last_l.substr(start,end) <<endl;
end++;
start = end;
}

}

最佳答案

根据您的代码,我认为您误解了传递给 substr 的参数.请注意,第二个索引是第一个参数之后的字符数不是子字符串的结束索引。

考虑到这一点,在 else 条件下,而不是:

end++;  // increment end index
start = end; // reset start index

你需要做类似的事情:

start = end + 1;  // reset start index
end = 0; // reset count of chars

此外,不要忘记在循环结束后添加最后一个逗号后剩余的额外字符串:

linetest.push_back(Last_l.substr(start + end));  // all the remaining chars

这是完整的片段:

for(char &ii : Last_l){
if( ii != ','){
end++;
}
else{
linetest.push_back(Last_l.substr(start,end));
start = end + 1;
end = 0;
}
}

linetest.push_back(Last_l.substr(start + end));

和工作demo .

如果您将 end 重命名为 count,这将更有意义。

另外,请避免using namespace std;,因为这被认为是不好的做法。

关于c++ - 用逗号分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61787378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com