Возможно ли создать оператор + функцию для строкового класса C ++? И объединять "литералы"? - PullRequest
6 голосов
/ 04 ноября 2011

Можно ли произвольно написать функцию operator+() для класса string в C ++, чтобы мне не приходилось использовать <sstream> для объединения строк?

Например, вместо того, чтобы делать

someVariable << "concatenate" << " this";

Могу ли я добавить operator+(), чтобы я мог сделать

someVariable = "concatenate" + " this";

1 Ответ

15 голосов
/ 04 ноября 2011

std::string operator+ объединяет два std::string с. Однако ваша проблема в том, что "concatenate" и "this" не являются двумя std::string с; они типа const char [].

Если вы хотите объединить два литерала "concatenate" и "this" по какой-либо причине (как правило, чтобы разделить строки на несколько строк), выполните:

string someVariable = "concatenate" " this";

И компилятор поймет, что вы на самом деле хотите string someVariable = "concatenate this";


Если "concatenate" и "this" были сохранены в std::string с, то следующее является действительным:

string s1 = "concatenate";
string s2 = " this";

string someVariable = s1 + s2;

OR

string s1 = "concatenate";

string someVariable = s1 + " this";

Или даже

string someVariable = string("concatenate") + " this";

Где " this" будет автоматически преобразовываться в std::string объект при вызове operator+. Чтобы это преобразование имело место, хотя бы один из операндов должен иметь тип std::string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...