C++ character concatenation with std::string behavior. Please explain this -
here cases c++ std::string couldn't understand.
1.
string ans = ""+'a'; cout << ans << endl; //prints _string::copy
2.
string ans=""; ans=ans+'a'; cout << ans << endl; //prints
3.
string ans=""; ans = ans + (5 + '0'); // throws error
4.
string ans=""; ans += (5 + '0'); //works
5.
in code, had line ans += to_string(q);
q single digit integer. program threw runtime error.
changed ans+= (q+'0');
, error got removed.
please clearing idea.
string ans = ""+'a';
"" address of empty string literal. 'a' gets interpreted integer, ascii code 65. adds 65 address of literal string, results in undefined behavior, possibly crash.
ans=ans+'a';
ans
std::string
. std::string
defines overloaded +
operator. several, actually. 1 of them, in particular, overloads +
parameter character, , appends character string.
ans = ans + (5 + '0'); // throws error
5+'0'
expression that's promoted int
type. std::string
not unambiguously overload +
operator int
parameter. result in compilation error.
ans += (5 + '0'); //works
std::string
have unambigous overloaded +=
operator, compiles fine.
Comments
Post a Comment