You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include <iostream>
#include <string>
#include <vector>
std::string demangle(const std::string& mangled) { std::string result; std::vector<std::string> parts;
size_t i = 0; while (i < mangled.size()) { if (std::isdigit(mangled[i])) { // Read length of the following name
size_t length = 0; while (std::isdigit(mangled[i])) { length = length * 10 + (mangled[i] - '0'); i++; } // Get the name part
std::string name = mangled.substr(i, length); parts.push_back(name); i += length; } else { // Handle other characters (if needed)
// result += mangled[i];
i++; } }
// Join parts with '.'
for (const auto& part : parts) { if (!result.empty()) { result += "."; } result += part; }
return result; }
int main() { std::string mangledName = "_ZNKiflytop13zscanprotocol16ZSCanProtocolCom7callcmdEiiPhii"; std::string demangledName = demangle(mangledName);
std::cout << "Demangled Name: " << demangledName << std::endl; return 0; }
|