首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 從字串提取數字字元並累加:ASCII 碼轉換技巧

     編輯:程式設計綜合問答

需求

輸入字串(如 "a1b23c"),提取其中所有數字字元('1','2','3'),轉為整數並累加(1+2+3=6)。

核心邏輯

字元 '0'~'9' 在 ASCII 碼中連續排列,'0'=48, '1'=49, ..., '9'=57。故 ch - '0' 即得對應整數值。

完整程式碼

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char shu[100];
    cout << "請輸入字串: ";
    cin >> shu;
    int sum = 0;
    int len = strlen(shu);
    for (int i = 0; i < len; i++) {
        if (shu[i] >= '0' && shu[i] <= '9') {
            sum += shu[i] - '0';
        }
    }
    cout << "sum=" << sum << endl;
    return 0;
}

關鍵點解析

  • shu[i] - '0':字元減去字元,結果為 int,自動提升參與加法。
  • strlen 需 <cstring>;C++ 建議改用 std::string 避免緩衝區溢位。
  • 若需處理多位數(如 "123" 視為 123 而非 1+2+3),需狀態機解析連續數字段。

擴充:使用 isdigit 與 std::string

#include <string>
#include <cctype>
string s; cin >> s;
int sum = 0;
for (char c : s) if (isdigit(c)) sum += c - '0';

總結

掌握字元與整數的 ASCII 對應關係,是字串處理數字的基礎技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved