【发布时间】:2020-07-21 21:55:18
【问题描述】:
用户将从终端输入一个字符串值。我可以用整数表示。但是我需要能够将其转换为字节数组/gsl::span。这可能吗?
#include <string>
#include <iostream>
#include <sstream>
int main()
{
// integer representation
std::string s = "0xaabbccdd";
unsigned int x = std::stoul(s, nullptr, 16);
std::cout << x << "\n";
// byte array or gsl::span
// std::array<uint8_t, 4> val{0xaa, 0xbb, 0xcc, 0xdd};
}
更新可能的解决方案(但使用 std::vector)
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
std::vector<std::string> split(const std::string & str, int len)
{
std::vector<std::string> entries;
for(std::string::const_iterator it(str.begin()); it != str.end();)
{
int num = std::min(len,(int)std::distance(it,str.end()));
entries.push_back(std::string(it,it+num));
it=it+num;
};
return entries;
}
int main() {
std::string str{"0xaabbccdd"};
str.erase(0, 2);
for (auto str : split(str, 2)) {
std::cout << str << std::endl;
}
return 0;
}
【问题讨论】:
-
我更新了可能的解决方案,但我宁愿避免使用 std::vector