C++ 如何选择何时使用逗号拆分字符串

C++ 如何选择何时使用逗号拆分字符串,c++,C++,我有一个字符串需要用逗号分割,但字符串中有一个逗号我不想分割 因此,我的字符串是: Let's eat, Granny,Happy,22,Chicken 我想这样分割它: Let's eat, Granny Happy 22 Chicken 但我得到的却是: Let's eat Granny Happy 22 Chicken 如何拆分此字符串而不弄乱第一个逗号?我有一个想法,那就是我想忽略的逗号后面有空格,我可以利用它,对吗?如果我错了,请纠正我 以下是我迄今为止编写的代码: strin

我有一个字符串需要用逗号分割,但字符串中有一个逗号我不想分割

因此,我的字符串是:

Let's eat, Granny,Happy,22,Chicken
我想这样分割它:

Let's eat, Granny
Happy
22
Chicken
但我得到的却是:

Let's eat
 Granny
Happy
22
Chicken
如何拆分此字符串而不弄乱第一个逗号?我有一个想法,那就是我想忽略的逗号后面有空格,我可以利用它,对吗?如果我错了,请纠正我

以下是我迄今为止编写的代码:

string delimiter = ",";
string test = "Let's eat, Granny,Happy,22,Chicken,";
size_t pos = 0;
string token;

while((pos = test.find(delimiter)) !=String::npos){ //position of comma

    token = test.substr(0, pos); //read in string at position of comma

}

由于数据有限,逗号实际上不是一个可靠的分隔符,除非您可以保证任何可忽略的逗号后面总是跟空白。如果是这样,您可以这样做:

Let's eat, Granny
Happy
22
Chicken
char分隔符=',';
字符串测试=“让我们吃吧,奶奶,快乐,22岁,鸡,”;
大小\u t开始=0,结束;
字符串标记;
做
{
end=test.find(分隔符,开始);
while((end!=string::npos)&&
((结束+1)(test[end+1]='')//一个可能的解决方案是使用正则表达式标记字符串:

#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>

int main()
{
    std::vector<std::string> items;
    std::string text = "Let's eat, Granny,Happy,22,Chicken";
    std::regex comma_re(",(?!\\s)",
            std::regex_constants::ECMAScript | std::regex_constants::icase);

    std::copy( std::sregex_token_iterator(text.begin(), text.end(), comma_re, -1),
               std::sregex_token_iterator(),
               std::back_inserter(items));

    for (const std::string& item : items){
        std::cout << item << std::endl;
    }
}
#包括
#包括
#包括
#包括
int main()
{
向量项;
std::string text=“让我们吃吧,奶奶,快乐,22,鸡肉”;
std::regex逗号_re(“,(?!\\s)”,
std::regex_常量::ECMAScript | std::regex_常量::icase);
std::copy(std::sregex_token_迭代器(text.begin()、text.end()、逗号_re,-1),
std::sregex_token_迭代器(),
标准:背部插入器(项目);
for(const std::string&item:items){

std::听起来很合理。你也可以尝试跳过第一个逗号。规则是当逗号位于无空格字符之间时分割?是的,我可以说我使用了一个不同的字符串,没有需要避免的逗号,那也会有点问题:/只是不要删除逗号,不小心吃了奶奶。那会很糟糕是的,这正是我想做的。但我不想在有空白的时候分开