std::string_view 的使用
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <regex>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <string_view>
|
||||
// 2025-01-02 05:01:50 [info] 1a480118 9607f81e f020 3a24 67761dbd 1a9ecbf8
|
||||
// 5655c75b 00601307
|
||||
#include <algorithm>
|
||||
@@ -95,8 +96,8 @@ const bool is_big_endian = []() {
|
||||
auto *p = reinterpret_cast<uint8_t *>(&x);
|
||||
return p[0] == 0x01; // 如果 p[0] 为 0x01,说明是大端字节序
|
||||
}();
|
||||
std::vector<std::string> split(const std::string &str,
|
||||
const std::string &delimiter) {
|
||||
std::vector<std::string> split(std::string_view str,
|
||||
std::string_view delimiter) {
|
||||
std::vector<std::string> tokens;
|
||||
size_t start = 0;
|
||||
size_t end = str.find(delimiter);
|
||||
@@ -110,7 +111,7 @@ std::vector<std::string> split(const std::string &str,
|
||||
tokens.push_back(str.substr(start)); // Add the last token
|
||||
return tokens;
|
||||
}
|
||||
std::string bin2mem(const std::string &bin) {
|
||||
std::string bin2mem(std::string_view bin) {
|
||||
const size_t len = bin.size();
|
||||
if (len % 8 != 0) {
|
||||
throw std::invalid_argument("binary string length must be a multiple of 8");
|
||||
@@ -395,7 +396,7 @@ TEST(Bi222, xor_hex_Ex) {
|
||||
#endif
|
||||
|
||||
// 将字节序从大端转换到当前平台字节序,并复制到目标内存中
|
||||
void big_endian_2_platform(const std::string &big_endian, char *dest) {
|
||||
void big_endian_2_platform(std::string_view big_endian, char *dest) {
|
||||
// 先复制原始数据
|
||||
std::string result = big_endian;
|
||||
// 如果当前平台是小端,反转数据
|
||||
@@ -405,14 +406,14 @@ void big_endian_2_platform(const std::string &big_endian, char *dest) {
|
||||
// 将转换后的数据拷贝到目标内存中
|
||||
std::memcpy(dest, result.data(), result.size());
|
||||
}
|
||||
std::string big_endian_2_platform(const std::string &big_endian) {
|
||||
std::string big_endian_2_platform(std::string_view big_endian) {
|
||||
std::string result;
|
||||
result.resize(big_endian.size());
|
||||
big_endian_2_platform(big_endian, result.data());
|
||||
return result;
|
||||
}
|
||||
// 将字节序从小端转换到当前平台字节序,并复制到目标内存中
|
||||
void little_endian_2_platform(const std::string &little_endian, char *dest) {
|
||||
void little_endian_2_platform(std::string_view little_endian, char *dest) {
|
||||
// 先复制原始数据
|
||||
std::string result = little_endian;
|
||||
// 如果当前平台是大端,反转数据
|
||||
@@ -422,7 +423,7 @@ void little_endian_2_platform(const std::string &little_endian, char *dest) {
|
||||
// 将转换后的数据拷贝到目标内存中
|
||||
std::memcpy(dest, result.data(), result.size());
|
||||
}
|
||||
std::string little_endian_2_platform(const std::string &little_endian) {
|
||||
std::string little_endian_2_platform(std::string_view little_endian) {
|
||||
std::string result;
|
||||
result.resize(little_endian.size());
|
||||
big_endian_2_platform(little_endian, result.data());
|
||||
|
||||
Reference in New Issue
Block a user