HOWTO · C++

如何在 C++ 中向字串新增整數

本文演示瞭如何在 C++ 中向字串中新增整數的方法。

本頁內容

若要在現有的 C++ 字串後附加整數,請先將整數轉成文字,再串接到字串中。一般情況下,使用 std::to_string 搭配 std::string::operator+= 最直接。你也可以使用 std::stringstream 組合出新的結果,或先轉換整數,再呼叫 std::string::append。

選擇適合的整數字串串接方式

如果已有字串要延長,請使用 std::to_string 和 +=。如果要透過串流插入運算子,將文字和值組合成新字串,則可使用 std::stringstream。若你特別想使用字串的成員函式,可呼叫 std::string::append;不過傳入的引數也必須是字串文字。以下範例都使用相同的起始文字和整數,展示各種做法。

使用 std::to_string 搭配 +=

std::to_string(number) 會將數值轉成 std::string,而 += 會把這段文字附加到現有字串。這個完整範例適合作為首選;它會印出英文標籤 Order number: 12345,後接換行。程式碼中的標籤維持英文。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

#include <iostream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    message += std::to_string(number);
    std::cout << message << '\n';
    return 0;
}
Order number: 12345

同一個轉換函式也接受浮點數。在較舊的 C++ 規格及許多實作中,std::to_string(12.345) 通常會產生類似 12.345000 的文字;較新的 C++ 版本可能採用不同的浮點數格式。請勿假設結果一定是固定的單一表示方式,也不要認定小數末尾的零會自動移除。如果需要指定小數位數或移除多餘的零,請使用可設定格式的串流,或採用其他能明確控制格式的方法。

使用 std::stringstream 組合字串

std::stringstream 可透過插入運算子 << 接收值。先插入起始文字和整數,再呼叫 .str() 取得組合完成的結果。這會建立一個結果字串,不會直接附加到或修改原始字串變數。使用此串流型別時,請包含 <sstream>。範例會印出英文標籤 Order number: 12345,後接換行;程式碼中的標籤維持英文。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    std::stringstream stream;
    stream << message << number;
    std::cout << stream.str() << '\n';
    return 0;
}
Order number: 12345

使用 std::string::append 附加轉換後的整數

std::string::append 會附加字元資料或字串文字,因此傳入前必須先轉換整數。如範例所示,字串多載可以直接接收 std::to_string 的結果。範例會印出英文標籤 Order number: 12345,後接換行;程式碼中的標籤維持英文。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

#include <iostream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    message.append(std::to_string(number));
    std::cout << message << '\n';
    return 0;
}
Order number: 12345

請勿將附加轉換後的整數,與 append(count, character) 多載混淆:後者會重複加入指定字元。例如,message.append(3, '!') 會加入 !!!;它不會把數字 3 轉成文字 3。