[C++] string + int + string
{
...
}
string operator+ (const string &s, int i)
{
...
}
Странно что подобные функции не включены в реализацию STL, может здесь есть какие-нибудь грабли?
И в данном случае сложение стринга и инта может иметь кучу смыслов, помимо сложения строки и строкового представления инта.
Поэтому такие перегрузки в STL-е - просто бессмыслица.
К тому же чем больше таких перегруженных операторов возникнет в коде, тем больше шанс в каком-нибудь месте наебнуться из-за того, что ты опечатался, а компилятор будет молчать как партизан.
stringstream для этого есть
stringstream для этого есть
// использовать stringstream запрещено
![](/images/graemlins/grin.gif)
![](/images/graemlins/grin.gif)
![](/images/graemlins/grin.gif)
Например, грабля в том, что на char* + int ты получишь совсем другой эффект.
Amusingly, the history of the evolution of C++ over time can be described as a history of trying to plug the leaks in the string abstraction. Why they couldn't just add a native string class to the language itself eludes me at the moment.
http://www.joelonsoftware.com/articles/LeakyAbstractions.htm...
// использовать stringstream запрещено
Это ж кто тебе запрещает его использование?
т.к. этот способ уже знаю, считаю его возможным,
но при этом не считаю его удобным и красивым.
int A;Код, семантически эквивалентный данному, выглядит так:
string S;
A=1123232;
S="ku ku ku";
S+=A;
S+="be be be";
Хотелось бы написать операции сложения компактно и в одну строку
std::string S = std::string("ku ku ku") + static_cast<char>(A) + "be be be";
(Хотелось бы обратить внимание аффтара, что выражение S+=A; не переводит A в строковое представление, а рассматривает его как код символа, который надо добавить к строке).
Если же хочется таки перевести A в строчку, и душит жаба пользоваться stringstream / strstream / itoa etc, то надо заюзать готовый врэппер типа boost::lexical_cast (ну или написать свой и песать что-то типа:
std::string S = std::string("ku ku ku") + boost::lexical_cast<std::string, int>(A) + "be be be";
![](/images/graemlins/smile.gif)
Оставить комментарий
SCIF32
Есть код, который делает:Хотелось бы написать операции сложения компактно и в одну строку, что-то вроде:
S="kukuku" + A + "be be be";
Можно ли как-нибудь сделать это стандартным способом?
// использовать stringstream запрещено