@@ -31,6 +31,7 @@ size_t Split(const std::string &src_str, const std::string sep, std::vector<std:
31
31
size_t start_pos = 0 ;
32
32
size_t end_pos = 0 ;
33
33
str_vec.clear ();
34
+
34
35
while (true ) {
35
36
end_pos = src_str.find (sep, start_pos);
36
37
const std::string &str_chip = src_str.substr (start_pos, end_pos - start_pos);
@@ -39,6 +40,7 @@ size_t Split(const std::string &src_str, const std::string sep, std::vector<std:
39
40
break ;
40
41
start_pos = end_pos + sep.size ();
41
42
}
43
+
42
44
return str_vec.size ();
43
45
}
44
46
@@ -47,6 +49,7 @@ size_t SplitBySpace(const std::string &src_str, std::vector<std::string> &str_ve
47
49
size_t start_pos = 0 ;
48
50
size_t end_pos = 0 ;
49
51
str_vec.clear ();
52
+
50
53
while (true ) {
51
54
start_pos = src_str.find_first_not_of (" \t " , end_pos);
52
55
if (start_pos == std::string::npos)
@@ -57,14 +60,41 @@ size_t SplitBySpace(const std::string &src_str, std::vector<std::string> &str_ve
57
60
if (end_pos == std::string::npos)
58
61
break ;
59
62
}
63
+
60
64
return str_vec.size ();
61
65
}
62
66
67
+ std::string Join (const std::vector<std::string> &str_vec, const std::string &delimiter)
68
+ {
69
+ std::string tmp;
70
+
71
+ if (!str_vec.empty ()) {
72
+ // ! 计算预留空间
73
+ size_t reserve_length = delimiter.length () * (str_vec.size () - 1 );
74
+ for (const auto &str : str_vec)
75
+ reserve_length += str.length ();
76
+
77
+ tmp.reserve (reserve_length); // ! 预留空间
78
+
79
+ bool is_need_insert_delimiter = false ;
80
+ for (const auto &str : str_vec) {
81
+ if (is_need_insert_delimiter)
82
+ tmp += delimiter;
83
+
84
+ tmp += str;
85
+ is_need_insert_delimiter = true ;
86
+ }
87
+ }
88
+
89
+ return tmp;
90
+ }
91
+
63
92
std::string StripLeft (const std::string &orig_str)
64
93
{
65
94
size_t start_pos = orig_str.find_first_not_of (' ' , 0 );
66
95
if (start_pos == std::string::npos)
67
96
return std::string ();
97
+
68
98
return orig_str.substr (start_pos);
69
99
}
70
100
@@ -73,6 +103,7 @@ std::string StripRight(const std::string &orig_str)
73
103
size_t end_pos = orig_str.find_last_not_of (' ' , orig_str.size () - 1 );
74
104
if (end_pos == std::string::npos)
75
105
return std::string ();
106
+
76
107
return orig_str.substr (0 , end_pos + 1 );
77
108
}
78
109
@@ -93,6 +124,7 @@ std::string StripQuot(const std::string &orig_str)
93
124
{
94
125
auto first_char = orig_str.front ();
95
126
auto last_char = orig_str.back ();
127
+
96
128
if (first_char == last_char && (first_char == ' \' ' || first_char == ' \" ' )) {
97
129
return orig_str.substr (1 , orig_str.length () - 2 );
98
130
} else {
@@ -117,6 +149,7 @@ std::string RawDataToHexStr(const void *data_ptr, uint16_t data_len, bool upperc
117
149
if (i < (data_len - 1 ))
118
150
oss << delimiter;
119
151
}
152
+
120
153
return oss.str ();
121
154
}
122
155
@@ -148,6 +181,7 @@ size_t HexStrToRawData(const std::string &hex_str, void *out_ptr, uint16_t out_l
148
181
p_data[i] = (hexCharToValue (h_char) << 4 ) | (hexCharToValue (l_char) & 0x0f );
149
182
++data_len;
150
183
}
184
+
151
185
return data_len;
152
186
}
153
187
0 commit comments