如何在 C++ 中把整型 Int 轉換為 Char 陣列
Jinku Hu
2023年10月12日
C++
C++ Integer
C++ Char
-
使用
std::printf函式將int轉換為char* -
結合
to_string()和c_str()方法將int轉換為char* -
使用
std::stringstream類方法進行轉換 -
使用
std::to_chars函式將int轉換為char*
本文將解釋如何使用不同的方法將整型 int 轉換為 char* 陣列(char*)。
在下面的例子中,我們假設將轉換後的輸出儲存在記憶體緩衝區中,為了驗證的目的,我們將使用 std::printf 輸出結果。
使用 std::printf 函式將 int 轉換為 char*
首先,我們需要分配空間來儲存一個單一的 int 變數,我們要將其轉換到 char 緩衝區中。注意,下面的例子是為整數資料定義最大長度 MAX_DIGITS。為了計算 char 緩衝區的長度,我們新增了 sizeof(char),因為 sprintf 函式會在目的地自動寫入以 \0 結束的 char 字串。因此我們應該注意為這個緩衝區分配足夠的空間。
#include <iostream>
#define MAX_DIGITS 10
int main() {
int number = 1234;
char num_char[MAX_DIGITS + sizeof(char)];
std::sprintf(num_char, "%d", number);
std::printf("num_char: %s \n", num_char);
return 0;
}
輸出:
num_char: 1234
請注意,不建議在源緩衝區和目標緩衝區重疊的情況下呼叫 sprintf(例如 sprintf(buf, "%s some text to add", buf)),因為它有未定義的行為,並且根據編譯器會產生不正確的結果。
結合 to_string() 和 c_str() 方法將 int 轉換為 char*
這個版本利用 std::string 類方法來進行轉換,使其比上一個例子中處理 sprintf 要安全得多。
#include <iostream>
int main() {
int number = 1234;
std::string tmp = std::to_string(number);
char const *num_char = tmp.c_str();
printf("num_char: %s \n", num_char);
return 0;
}
使用 std::stringstream 類方法進行轉換
這個方法是用 std::stringstream 類實現的。也就是說,我們建立一個臨時的基於字串的流,在這裡儲存 int 資料,然後通過 str 方法返回字串物件,最後呼叫 c_str 進行轉換。
#include <iostream>
#include <sstream>
int main() {
int number = 1234;
std::stringstream tmp;
tmp << number;
char const *num_char = tmp.str().c_str();
printf("num_char: %s \n", num_char);
;
return 0;
}
使用 std::to_chars 函式將 int 轉換為 char*
這個版本是在 C++17 中新增的一個純 C++ 風格的函式,定義在標題 <charconv> 中。另外,這個方法提供了對範圍的操作,這可能是特定場景下最靈活的解決方案。
#include <charconv>
#include <iostream>
#define MAX_DIGITS 10
int main() {
int number = 1234;
char num_char[MAX_DIGITS + sizeof(char)];
std::to_chars(num_char, num_char + MAX_DIGITS, number);
std::printf("num_char: %s \n", num_char);
return 0;
}
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
相關文章 - C++ Integer
- C++ 中的 INT_MAX 和 INT_MIN 巨集表示式
- 在 C++ 中計算一個數字的位數
- 在 C++ 中檢查一個數字是否為質數
- 在 C++ 中檢查輸入是否為整數
- 如何在 C++ 中從字串中解析整數
- 如何在 C++ 中將 Int 轉換為 ASCII 字元
