C++ std::string 轉 std::vector<char> 的 2 種方法

本篇 ShengYu 介紹 C++ std::stringstd::vector<char> 的方法,

以下 C++ std::stringstd::vector<char> 的 2 種方法分別是,

  • 使用 vector range constructor
  • 使用 std::copy()

那我們就開始吧!

使用 vector range constructor

C++ std::stringstd::vector<char> 可以使用 vector 建構子中的 range constructor,方法如下,

cpp-string-to-vector-char.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// g++ cpp-string-to-vector-char.cpp -o a.out
#include <iostream>
#include <string>
#include <vector>

int main() {
std::string s = "Hello World";
std::vector<char> v(s.begin(), s.end());

for (int i = 0; i < v.size(); i++) {
std::cout << v[i];
}

return 0;
}

輸出如下,

1
Hello World

使用 std::copy()

另一種 C++ std::stringstd::vector<char> 可以使用 std::copy(),首先 vector 要配置好 string 長度的大小,之後再用 std::copy(),前兩個參數是指定複製的範圍,第三個參數是複製到哪裡,

cpp-string-to-vector-char2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// g++ cpp-string-to-vector-char2.cpp -o a.out
#include <iostream>
#include <string>
#include <vector>

int main() {
std::string s = "Hello World";
std::vector<char> v(s.length());
std::copy(s.begin(), s.end(), v.begin());

for (int i = 0; i < v.size(); i++) {
std::cout << v[i];
}

return 0;
}

輸出如下,

1
Hello World

std::copy() 還可以使用 std::back_inserter 將複製的資料在容器的尾端插入,std::back_inserter 會在內部互叫 push_back,所以 vector 一開始不用預先分配好 size,範例如下,但是以效能來說,前述例子預先分配好 size 會比較好,也不會有過多的預留空間,

cpp-string-to-vector-char3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// g++ cpp-string-to-vector-char3.cpp -o a.out
#include <iostream>
#include <string>
#include <vector>

int main() {
std::string s = "Hello World";
std::vector<char> v;
std::copy(s.begin(), s.end(), std::back_inserter(v));

for (int i = 0; i < v.size(); i++) {
std::cout << v[i];
}

return 0;
}

輸出同上。

以上就是 C++ std::stringstd::vector<char> 的 2 種方法的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其他參考
c++ - How to copy std::string into std::vector<char>? - Stack Overflow
https://stackoverflow.com/questions/8263926/how-to-copy-stdstring-into-stdvectorchar
Convert a string to a vector of chars in C++
https://www.techiedelight.com/convert-string-vector-chars-cpp/

其它相關文章推薦
C/C++ 新手入門教學懶人包
C++ std::vector<char> 轉 std::string 的 2 種方法
C/C++ 整數轉字串的方法與範例
C++ virtual 的兩種用法
C/C++ 字串反轉 reverse
C/C++ call by value傳值, call by pointer傳址, call by reference傳參考 的差別