我的命令是:
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
被分为South
和Africa
,我需要将其保留为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"
答案 0 :(得分: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;
}