Closed BHM-Bob closed 2 years ago
用您的代码的时候,StringUtil.hpp与自己的代码所用的C++标准有冲突。C++新手,直接用的C++20。对您的代码改了点,可以在C++20标准下编译,跑通demo。 before
inline std::string& LTrim(std::string &s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<unsigned, bool>(IsSpace)))); return s; } inline std::string& RTrim(std::string &s) { s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<unsigned, bool>(IsSpace))).base(), s.end()); return s; } inline std::string& Trim(std::string &s) { return LTrim(RTrim(s)); } inline std::string& LTrim(std::string & s, char x) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::bind2nd(std::equal_to<char>(), x)))); return s; } inline std::string& RTrim(std::string & s, char x) { s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::bind2nd(std::equal_to<char>(), x))).base(), s.end()); return s; }
after
inline std::string& LTrim(std::string &s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not_fn(std::cref(IsSpace)))); return s; } inline std::string& RTrim(std::string &s) { s.erase(std::find_if(s.rbegin(), s.rend(), std::not_fn(std::cref(IsSpace))).base(), s.end()); return s; } inline std::string& Trim(std::string &s) { return LTrim(RTrim(s)); } inline std::string& LTrim(std::string & s, char x) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not_fn(std::bind(std::equal_to<char>(), placeholders::_1, x)))); return s; } inline std::string& RTrim(std::string & s, char x) { s.erase(std::find_if(s.rbegin(), s.rend(), std::not_fn(std::bind(std::equal_to<char>(), placeholders::_1, x))).base(), s.end()); return s; }
可以试试提交个PR么?
https://github.com/yanyiwu/limonp/pull/31/files
https://github.com/yanyiwu/limonp/pull/31
用您的代码的时候,StringUtil.hpp与自己的代码所用的C++标准有冲突。C++新手,直接用的C++20。对您的代码改了点,可以在C++20标准下编译,跑通demo。
before
after