#26229: c++解題思路


ivorchu@gmail.com (Ivor Chu)

學校 : 臺北市私立復興實驗高級中學
編號 : 129636
來源 : [124.218.229.180]
最後登入時間 :
2021-07-26 01:28:29
d098. Stringstream運用練習(C++) -- 說明文件出自C++ Reference | From: [39.9.201.242] | 發表日期 : 2021-07-25 16:48

剛開始宣告一字串 並使用getline()來獲取整行輸入 此例中用法為getline(cin, str)

接著創建一input string stream來切割str中的每一單詞

進入while迴圈判斷istringstream是否還有輸入 並且使用for迴圈跑過整個單詞

遇到數字則將此單詞的值*10並加上現在迴圈跑的數字a[i]-'0' 此為ASCII碼計算

若遇到非數字則將此單詞的值清空並跳出此單詞的迴圈

最後將每一個單詞的值加總即為答案

 

AC解答⬇️

#include <iostream>

 

#include <string>

 

#include <sstream>

 

#include <cctype>

 

using namespace std;

 

int main() {

 

    ios::sync_with_stdio(0);

 

    cin.tie(0);

 

 

    string str;

 

    istringstream stream;

 

    while (getline(cin, str)) {

 

        stream.clear();

 

        stream.str(str);

 

        string a;

 

        int sum = 0;

 

        while (stream >> a) {

 

            int num = 0;

 

            for (int i = 0; i < a.length(); i++) {

 

                if (!isdigit(a[i])) {

 

                    num = 0;

 

                    break;

 

                } else {

 

                    num*=10;

 

                    num+=(a[i]-'0');

 

                }

 

            }

 

            sum+=num;

 

        }

 

        cout << sum << "\n";

 

    }

 

    return 0;

 

}

 
ZeroJudge Forum