如何在 C++ 中把 Char 陣列轉換為字串

Jinku Hu 2023年10月12日
  1. 使用 std::string 建構函式將 char 陣列轉換為 string
  2. 使用 memmove 函式將 Char 陣列轉換為字串
  3. 使用 std::basic_string::assign 方法將 Char 陣列轉換為字串
如何在 C++ 中把 Char 陣列轉換為字串

本文介紹了將 char 陣列轉換為 string 容器的多種方法。

使用 std::string 建構函式將 char 陣列轉換為 string

在這個例子中,我們宣告一個 C-string 常量,然後將其作為 string 構造引數。這個方法會自動計算字串長度。在呼叫建構函式後,我們可以根據需要操作 tmp_string 變數。

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  const char* c_string = "This will be stored in std::string";

  string tmp_string(c_string);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

輸出:

This will be stored in std::string

使用 memmove 函式將 Char 陣列轉換為字串

一個更直接的方法是將 char*資料複製到一個初始化的 string 容器中。這樣一來,你必須事先知道 char 陣列的長度,才能將其傳遞給 memmove 函式。請注意,string 容器初始化對於正確的行為至關重要,這就是為什麼我們要用 0x01 位元組填充 tmp_string 變數的原因。

#include <cstring>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string(C_STRING_LENGTH, 1);

  memmove(&tmp_string[0], c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

需要注意的是,你也可以使用各種函式將 c_string 資料複製到 tmp_string 中,比如 memcpy, memccpy, mempcpy, strcpystrncpy, 但請注意仔細閱讀手冊頁面並考慮其邊緣情況/錯誤。

使用 std::basic_string::assign 方法將 Char 陣列轉換為字串

和前面的例子一樣,這個方法也要求得到 char 陣列的長度。我們定義一個名為 tmp_ptrchar 指標,並將 tmp_string 中第一個字元的地址分配給它。

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string;

  tmp_string.assign(c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ Char

相關文章 - C++ String