在C++中将字符串转换为矢量
Converting a string to vector in C++
在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';
这是最简单的一个!
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数