问题: stoi函数遇到字符串为空的时候会出现崩溃,因此要做判空处理。

#include <cctype>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool isNumber(const string& str) {
  for (char const& c : str) {
    if (std::isdigit(c) == 0) return false;
  }
  return true;
}
int main() {
    string s;
    int x = 0;
    int y = 0;
    while(getline(cin, s, ';'))
    {
        if (s.length() <= 0)
            continue;
        int num = 0;
        if (isNumber(s.substr(1)) && s[1] != '\0'){
            // cout << s.substr(1) << endl;
            num = stoi(s.substr(1),nullptr,10);
            // cout << num;
        }
        switch (toupper(s[0])) {
            case 'W':
                y += num;
                continue;
            case 'A':
                x -= num;
                continue;
            case 'S':
                y -= num;
                continue;
            case 'D':
                x += num;
                continue;
            default:
                continue;
        }
    }
    cout << x << "," << y;
}
// 64 位输出请用 printf("%lld")