cpp-base64
cpp-base64 copied to clipboard
can't decode base64-encoded data with linebreaks
Can't remove '\n' directly at here ,because of the character not in standard base64-encoded data ,but i don't know better solution
issue at :base64.cpp:171 ` if (remove_linebreaks) {
std::string copy(encoded_string);
copy.erase(std::remove(copy.begin(), copy.end(), '\n'), copy.end());
return base64_decode(copy, false);
}`
Windows linefeed is \r\n
Old MacOS linefeed is \r. New MacOS versions is \n
Linux linefeed is \n.
To avoid errors on decode, try removing all spacing chars \r, \n, \t, \v, \f, \000
Example
#include <string>
#include <iostream>
#include <vector>
void removeSubstrings(std::string& str, const std::vector<std::string>& toRemove) {
for (const auto& subStr : toRemove) {
size_t pos;
while ((pos = str.find(subStr)) != std::string::npos) {
str.erase(pos, subStr.length());
}
}
}
int main() {
std::string str = "String\n with\t text\r that must be removed 😑😀!!!";
std::vector<std::string> toRemove = {"\r", "\n", "\t", "😑"};
removeSubstrings(str, toRemove);
std::cout << "Result: " << str << std::endl;
return 0;
}
Output
Result: String with text that must be removed 😀!!!