本篇 ShengYu 介紹 C++ std::string
轉 std::vector<char>
的方法,
以下 C++ std::string
轉 std::vector<char>
的 2 種方法分別是,
- 使用 vector range constructor
- 使用 std::copy()
那我們就開始吧!
使用 vector range constructor
C++ std::string
轉 std::vector<char>
可以使用 vector 建構子中的 range constructor,方法如下,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
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::string
轉 std::vector<char>
可以使用 std::copy(),首先 vector 要配置好 string 長度的大小,之後再用 std::copy(),前兩個參數是指定複製的範圍,第三個參數是複製到哪裡,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
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 會比較好,也不會有過多的預留空間,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
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::string
轉 std::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傳參考 的差別