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

C++字符轉數字:ASCII碼直接賦值與標準庫函數對比

     編輯:程式設計綜合問答

C++中將單個字符(字母、數字、符號)轉換為對應整數值,最直接方法是利用**字符類型本質是整數**,直接賦值給`int`變量即得ASCII/編碼值。

最簡實現


#include 
using namespace std;

int main() {
    char ch;
    cout << "請輸入一個字符: ";
    cin >> ch;           // 讀取首個非空白字符
    int asciiValue = ch; // 隱式轉換:char → int (ASCII碼)
    cout << "對應整數值: " << asciiValue << endl;
    return 0;
}
  • 輸入 `'A'` → 輸出 `65`
  • 輸入 `'0'` → 輸出 `48`
  • 輸入 `'@'` → 輸出 `64`

字符數字轉整數值(如'5'→5)

若需將**數字字符**轉為對應**數值**,需減去`'0'`:


char digitChar = '7';
int numericValue = digitChar - '0'; // 7
// 通用安全版
if (isdigit(ch)) {
    int val = ch - '0';
}

標準庫函數對比

函數頭文件用途示例
`int(ch)` / `(int)ch`內置獲取字符編碼值`int('A')` → 65
`atoi()` / `strtol()```字符串轉整數`atoi("123")` → 123
`stoi()` / `stol()``` (C++11)string轉整數,異常處理`stoi("456")` → 456
`isdigit()` / `isalpha()```字符分類判斷`isdigit('5')` → true

進階:多字符串轉整數


string s = "12345";
int num = stoi(s); // 推薦 C++11
// 或舊式
char buf[20];
strcpy(buf, s.c_str());
int num2 = atoi(buf);

編碼陷阱提醒

  • 以上均基於**ASCII/兼容編碼(UTF-8單字節部分)**。
  • 中文字符在`char`中佔多字節(UTF-8 3字節),直接賦值`int`得到的是首字節值,**無意義**。
  • 處理多字節字符請用`wchar_t`/`char16_t`/`char32_t`及對應庫(``、ICU、Boost.Locale)。
核心認知:C/C++中 `char` 本質是 1 字節整數,直接賦值給 `int` 即得編碼值;數字字符轉數值必須減 `'0'`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved