将string a = "22222255",转为vector<uint8_t> s = {'2','2','2','2','2','2','5','5'};
时间: 2023-09-24 13:11:30 浏览: 74
可以使用string的迭代器,将每个字符转化为uint8_t类型,然后存储到vector中。具体代码如下:
```c++
#include <iostream>
#include <vector>
#include <string>
int main() {
std::string a = "22222255";
std::vector<uint8_t> s;
for (auto it = a.begin(); it != a.end(); ++it) {
s.push_back(static_cast<uint8_t>(*it));
}
for (auto i : s) {
std::cout << i << " ";
}
return 0;
}
```
输出结果为:50 50 50 50 50 50 53 53
相关问题
c++98,将int d = 324,转为八位的string b = "00000324",,再将b转为vector<uint8_t> c
可以使用以下代码将 int 转为八位的 string:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <iomanip>
std::string intToEightBitString(int num)
{
std::stringstream ss;
ss << std::setw(8) << std::setfill('0') << num;
return ss.str();
}
```
然后可以使用以下代码将 string 转为 vector<uint8_t>:
```cpp
std::vector<uint8_t> stringToVector(const std::string& str)
{
std::vector<uint8_t> res;
for (int i = 0; i < str.size(); i += 8)
{
uint8_t byte = 0;
for (int j = 0; j < 8; j++)
{
byte = (byte << 1) + (str[i + j] - '0');
}
res.push_back(byte);
}
return res;
}
```
完整代码如下:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <iomanip>
std::string intToEightBitString(int num)
{
std::stringstream ss;
ss << std::setw(8) << std::setfill('0') << num;
return ss.str();
}
std::vector<uint8_t> stringToVector(const std::string& str)
{
std::vector<uint8_t> res;
for (int i = 0; i < str.size(); i += 8)
{
uint8_t byte = 0;
for (int j = 0; j < 8; j++)
{
byte = (byte << 1) + (str[i + j] - '0');
}
res.push_back(byte);
}
return res;
}
int main()
{
int d = 324;
std::string b = intToEightBitString(d);
std::cout << "d: " << d << ", b: " << b << std::endl;
std::vector<uint8_t> c = stringToVector(b);
std::cout << "c: ";
for (int i = 0; i < c.size(); i++)
{
std::cout << (int)c[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
vector<uint8_t>怎么转换成vector<int32_t>
可以使用std::transform函数将vector<uint8_t>转换成vector<int32_t>,示例代码如下:
vector<uint8_t> vec1 = {1, 2, 3, 4};
vector<int32_t> vec2(vec1.size());
std::transform(vec1.begin(), vec1.end(), vec2.begin(), [](uint8_t val) {
return static_cast<int32_t>(val);
});
这里使用了lambda表达式将uint8_t类型的值转换成int32_t类型的值。