循环遍历分割字符串 正则表达式
#include <iostream> #include <string> #include <regex> using namespace std; int main() { std::string str; getline(cin, str); regex pat("^([ASWD]{1})(\\d*)$"); int coordinate_x = 0; int coordinate_y = 0; int i = 0; while(i < str.size()) { int cmd_len = 0; int j = i; while(j < str.size() && str[j] != ';') { cmd_len++; j++; } string cmd_str = str.substr(i, cmd_len); smatch match; if(regex_search(cmd_str, match, pat)) { string direction_str = match[1]; int distance = stoi(match[2]); switch(direction_str[0]) { case 'W': coordinate_y += distance; break; case 'S': coordinate_y -= distance; break; case 'A': coordinate_x -= distance; break; case 'D': coordinate_x += distance; break; } } else //invalid command { } i = j+1; } cout << coordinate_x << "," << coordinate_y << endl; return 0; }