问题: 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")