本篇介紹 C/C++ 整數轉字串 int to string 的方法與範例,在寫程式時經常會遇到需要將整數轉成字串的情況,本篇整理了過往我遇到的問題與解決經驗整理出幾種整數轉成字串方式,內容包含 Windows 下的 itoa 以及 Linux / macOS 的對應方法,看完本篇內容以後你將更能應付各種平台下的 int to string 整數轉成字串應對處理,
以下 C/C++ 整數轉字串的方法與範例分別是,
Windows 下的 itoa
Linux 下沒有 itoa,那自幹一個 itoa
C 的整數轉字串通用方法
C++ std::to_string()
那麼就開始吧!
Windows 下的 itoa
最早我是在 Windows 上寫程式的,隨著寫程式的經驗變多,自然也記得遇到字串轉整數時就會想到 itoa 這函式,那時 itoa 用得真順手啊 所以你是在 Windows 下寫程式要字串轉整數的話你可以直接使用 itoa,
那在 Linux itoa 怎麼會編譯錯誤??itoa was not declared in this scope 什麼!Linux itoa 不存在的函式!晴天霹靂!! itoa 不是一個標準的 api,itoa 是 Windows 下才有的 api,Linux 下沒有 itoa~當然 macOS / unix-like 也~沒~有~
還記得當初我第一次在 Linux 下寫程式試了老半天一直無法成功,原來是 Linux 下沒有這個 api 呀!所以如果你是在 Linux 下堅持要用 itoa 的話可以考慮自幹一個 itoa。
自幹一個 itoa 範例如下,一開始先用 sign 變數紀錄正負號,如果是負數的話就將 sign 設定成 -1 且 n 去除負號,負號會在稍後加回去。 接著用迴圈將數字轉成字串,用 mod 10 取餘數的方式來得到個位數字,再加上 '0' 就可以得到該數字的字元,然後 n = n/10 再重複步驟,可以發現這樣處理下來得到數字字串是相反的,所以最後會再用 reverse 反轉的方式得到原本的數字順序。 全部數字都轉換成字串後再把負號加回去,最後 reverse 反轉整個字串就得到最終的字串了,reverse 在之前有介紹過了細節就略過,想了解細節可以參考之前 reverse 的文章。
Segoe:是一款西文無襯線體,是由微軟公司開發的並且廣泛使用的字型 Roboto:2011年後,隨著 Android 4.0 的發布,Android 預設字體改成 Roboto 系列 Droid:2011年前都是Android系統的標準字體 Helvetica:是一種廣泛使用於拉丁字母的無襯線字體 Noto Sans TC:黑體字體–思源黑體(繁體中文) Microsoft JhengHei:微軟正黑體 Microsoft YaHei:微軟雅黑體