问题 今天写代码的时候忽然跳出这么一条: terminate called after throwing an instance of 'std::invalid_argument' what(): stoi 解决 检查了一下发现是这句话写反了,应该是判断字符串非空的时候再使用stoi函数: sum += mp[s[i]] * (cnt == "" ? (stoi(cnt)) : 1); 正确写法: sum += mp[s[i]] * (cnt == "" ? 1 : (stoi(cnt)));