在C++中将字符串转换为矢量

Converting a string to vector in C++

本文关键字:转换 字符串 C++      更新时间:2023-10-16

在C++中是否可以轻松地将字符串转换为向量?

string s = "12345"
vector<int>(s.begin(), s.end(), c => c - '0'); // something like that

目标是拥有像{ 1, 2, 3, 4, 5 }; 这样的int向量

我不想使用循环,我想写一个清晰简单的代码。(我知道下面无论如何都会有一些循环(。

字符串总是一个数字。

您可以从开始

string s = "12345"
vector<int> v(s.begin(), s.end())

然后使用<algorithm>transform:

transform(
    s.begin(), s.end(), 
    s.begin(), 
    [](char a){return a - '0';});

也许不是你想要的(我不知道如何在构造函数中实现(:

string s = "12345";
vector<int> v;
for_each(s.begin(), s.end(), [&v](char c) {v.push_back(c - '0');});

如果字符串太长,以至于两次迭代的性能影响很大,您也可以只需一次:

vector<int> v;
v.reserve(str.size());
transform(begin(str), end(str), back_inserter(v),
    [](const auto &c){return c - '0';});

(或者使用其他人已经显示的C++11 lambda。(

带有std::transform:的一个循环

std::vector<int> v(s.size());
std::transform(s.begin(), s.end(), v.begin(), [](char c){return c - '0';});
string s = "1234";
vector<int> v;
for(auto& i : s) v.push_back(i - '0');

一个衬垫!

我只有两行:

vector<int> v(s.begin(), s.end());
for(auto& i : v) i = i - '0';

这是最简单的一个!