如何在 C++ 中把 Char 陣列轉換為字串
Jinku Hu
2023年10月12日
-
使用
std::string
建構函式將 char 陣列轉換為 string -
使用
memmove
函式將 Char 陣列轉換為字串 -
使用
std::basic_string::assign
方法將 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
, strcpy
或 strncpy
, 但請注意仔細閱讀手冊頁面並考慮其邊緣情況/錯誤。
使用 std::basic_string::assign
方法將 Char 陣列轉換為字串
和前面的例子一樣,這個方法也要求得到 char
陣列的長度。我們定義一個名為 tmp_ptr
的 char
指標,並將 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
相關文章 - C++ Char
- C++ 中計算字串一個字元的出現次數
- 在 C++ 中獲取字元的 ASCII 值
- 如何在 C++ 中將 ASCII 碼轉換為字元
- 如何在 C++ 中把 Char 陣列轉換為 Int
- 如何在 C++ 中把字串轉換為 Char 陣列