1

私のコマンドは次のとおりです。

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に分割されていることです。そのままにしておく必要があります。SouthAfricaSouth 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"
4

1 に答える 1

1

std::stringstreamとを使用して文字列を解析できますstd::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;
}
于 2013-06-19T00:34:05.750 に答える