#include<iostream> #include <string> #include <sstream> #include <vector> using namespace std; int main() { string st; while (cin >> st) { istringstream is(st); string temp; vector<string> vec; while(getline(is,temp,';')) { vec.emplace_back(temp); } int x = 0, y = 0; for (int i = 0; i < vec.size(); i++) { //确定坐标移动的大小,[-99,99] int num = 0; //(横或纵)坐标移动的大小 //若字符串为三位有效位,则第二和第三位是坐标移动的大小 if((vec[i].size() == 3) && (vec[i][1] >='0') && (vec[i][1] <= '9') && (vec[i][2] >='0') && (vec[i][2] <= '9')) { num = (vec[i][1] - '0') * 10 + (vec[i][2] - '0'); } //若字符串为两位有效位,则第二位是坐标移动的大小 if((vec[i].size() == 2) && (vec[i][1] <= '9') && (vec[i][1] >= '0')) { num = (vec[i][1] - '0'); } //若字符串为一位有效位,则无坐标移动 if(vec[i].size() == 1) { num = 0; } //确定坐标移动的方向,左右上下 switch(vec[i][0]) { case 'A': x -= num; break; case 'D': x += num; break; case 'S': y -= num; break; case 'W': y += num; break; default: break; } } cout << x << "," << y << endl; return 0; } }
正则表达式regex???
substr用法,字符串类型题常用