在空格上有选择地分割字符串



我的命令是:

move 1 "South Africa" "Europe"
代码:

do 
{
  cut = text.find(' ');
  if (cut == string::npos) 
  {
    params.push_back(text);
  } 
  else 
  {
    params.push_back(text.substr(0, cut));
    text = text.substr(cut + 1);
  }
}  
while (cut != string::npos);

问题是South Africa被分成SouthAfrica,我需要它保持South Africa

剪切后参数:

1, South, Africa, Europe

我需要它是:

1, South Africa, Europe

我该怎么做?正则表达式?

命令的另一个例子:

move 3 "New Island" "South Afrika"

和我的代码在' '之后切断,我需要在参数中,我推回

3, New Island, South Africa

我的代码使:

3,"New,Island","South,Africa"

您可以使用std::stringstreamstd::getline来解析您的字符串

#include <iostream>
#include <sstream>
#include <string>
int main() {
    std::string text("move 3 "New Island" "South Afrika"");
    std::string command, count, country1, country2, temp;
    std::stringstream ss(text);
    ss >> command >> count;
    ss.str("");
    ss << text;
    std::getline(ss, temp, '"');
    std::getline(ss, country1, '"');
    std::getline(ss, temp, '"');
    std::getline(ss, country2, '"');
    std::cout << command << ", " << count << ", " <<
        country1 << ", " << country2 << std::endl;
    return 0;
}

最新更新