关键代码就是那句赋值
...
if(s1_len > s2_len)
for(int i = 1; i <= s1_len - s2_len; i++)
s2 = '0' + s2;
...
然后编译器报错:main.cpp:41:10: error: no viable overloaded '='
s2 = s2 + "0";
~~ ^ ~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1330:19: note:
candidate function not viable: 'this' argument has type 'const string' (aka 'const basic_string<char,
char_traits<char>, allocator<char> >'), but method is not marked const
basic_string& operator=(const basic_string& __str);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1337:45: note:
candidate function not viable: 'this' argument has type 'const string' (aka 'const basic_string<char,
char_traits<char>, allocator<char> >'), but method is not marked const
_LIBCPP_INLINE_VISIBILITY basic_string& operator=(const value_type* __s) {return assign(__s);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1338:19: note:
candidate function not viable: 'this' argument has type 'const string' (aka 'const basic_string<char,
char_traits<char>, allocator<char> >'), but method is not marked const
basic_string& operator=(value_type __c);
^
我用的是Xcode的terminal-tools里的g++编译
本来就没有
operator+(char, const std::string&)
这个重载。改成
s2 = "0" + s2
吧