如何处理CPP中弦线中的空间

how to handle spaces in stringstream in cpp?

本文关键字:空间 CPP 何处理 处理      更新时间:2023-10-16

i正在求解arithmaticii。我将获得以下输入的正确输出:

41   1 * 2 =29/5 =103 * 103 * 5 =50 * 40 * 250   791 =

输出:

4553045500791

我得到了正确的输出,但是当我向SPOJ提交解决方案时,我获取SIGABRT运行时错误。

注意:它也可能包含提高可读性的空间。

由于输入可能不包含空格,我该如何处理,因为那是给我错误的。

因为我不提供程序时我的程序停止(运行时错误)输入(1 * 1 2 =)

中的空间
扔出" std :: invalid_argument"实例后终止调用  什么():stoll

请帮忙。我该怎么办?

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main() {
    int t;
    string str;
    cin >> t;
    while (t--) {

        ///using cin.ignore() as input as preceded by a single line  
        cin.ignore();
        getline(cin, str, 'n');
        stringstream split(str);
        ///now use getline with specified delimeter to split string stream
        string intermediate;
        int flag = 0;
        long long int ans=1;
        while (getline(split, intermediate, ' ')) {
            if (intermediate == "=") {
                cout << ans<<"n";
                break;
            }
            if (intermediate == "*") {
                flag = 1;
                continue;
            }
            else if (intermediate == "/") {
                flag = 2;
                continue;
            }
            else if (intermediate == "+") {
                flag = 3;
                continue;
            }
            else if(intermediate == "-"){
                flag = 4;
                continue;
            }
            if (flag == 1) {
                ans *= stoll(intermediate);
            }
            else if (flag == 2) {
                ans /= stoll(intermediate);
            }
            else if (flag == 3) {
                ans += stoll(intermediate);
            }
            else if (flag == 4) {
                ans -= stoll(intermediate);
            }
            else if (flag == 0) {
                ans = stoll(intermediate);
            }
        }
    }
}

一次输入一行。将第一个数字放入ANS。然后按字符循环浏览弦乐器的其余部分。如果字符是算术运算符('*'或' '或'/'或' - ),则在其之后将有一个数字。提取数字并执行指定的操作。如果字符是'='打印答案。

提示:如何提取数字?

1.第一个数字从开始并直到第一个算术运算符。
2。所有其他数字均在算术运算符或'='。

之间