MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / replaceEscapeSequences

Function replaceEscapeSequences

lib/utils.cpp:149–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147}
148
149std::string replaceEscapeSequences(const std::string &source) {
150 std::string result;
151 result.reserve(source.size());
152 for (std::size_t i = 0; i < source.size(); ++i) {
153 if (source[i] != '\\' || i + 1 >= source.size())
154 result += source[i];
155 else {
156 ++i;
157 if (source[i] == 'n') {
158 result += '\n';
159 } else if (source[i] == 'r') {
160 result += '\r';
161 } else if (source[i] == 't') {
162 result += '\t';
163 } else if (source[i] == 'x') {
164 std::string value = "0";
165 if (i + 1 < source.size() && std::isxdigit(source[i+1]))
166 value += source[i++ + 1];
167 if (i + 1 < source.size() && std::isxdigit(source[i+1]))
168 value += source[i++ + 1];
169 result += static_cast<char>(std::stoi(value, nullptr, 16));
170 } else if (source[i] == '0') {
171 std::string value = "0";
172 if (i + 1 < source.size() && source[i+1] >= '0' && source[i+1] <= '7')
173 value += source[i++ + 1];
174 if (i + 1 < source.size() && source[i+1] >= '0' && source[i+1] <= '7')
175 value += source[i++ + 1];
176 result += static_cast<char>(std::stoi(value, nullptr, 8));
177 } else {
178 result += source[i];
179 }
180 }
181 }
182 return result;
183}
184
185
186std::vector<std::string> splitString(const std::string& str, char sep)

Callers 4

isCCharFunction · 0.85
isCMultiCharFunction · 0.85
getStrLengthMethod · 0.85

Calls 1

sizeMethod · 0.45

Tested by 1