Как объединить несколько CString

Все функции возвращают CString, это код MFC и должен компилироваться в 32 и 64 бита.

В настоящее время я использую

CString sURI = GetURL();
sURI += GetMethod();
sURI += "?";
sURI += GetParameters();

Существует любой способ сделать то же самое, например:

CString sURI = GetURL() + GetMethod() + "?" + GetParameters();

person Gustavo V    schedule 01.07.2010    source источник
comment
Вы пробовали? Какие (если есть) ошибки компилятора вы получили?   -  person Michael Kristofik    schedule 01.07.2010
comment
Ты это пробовал? msdn.microsoft.com/en-us/library/72b2swax.aspx вроде должно работать...   -  person Cogwheel    schedule 01.07.2010


Ответы (2)


Проблема в том, что "?" типа "const char*", и его оператор + не принимает правый операнд типа CString. Вы должны преобразовать "?" в CString следующим образом:

CString sURI = GetURL() + GetMethod() + _T("?") + GetParameters();
person Bojan Hrnkas    schedule 18.03.2011
comment
_T преобразует символ или строку в его аналог Unicode, я думаю, вы имели в виду CString(?) - person 8bitwide; 28.09.2012
comment
Это неправда. _T преобразует строку в правильный тип символа, который зависит от параметров проекта. Если вы выбираете Unicode в параметрах проекта, он преобразует строку в const wchar*, в противном случае возвращает const char*. - person Bojan Hrnkas; 03.10.2012

Пока все эти функции возвращают объект CString, вполне допустимо использовать оператор + для конкатенации.

В противном случае используйте функцию CString _T(const char *), чтобы обернуть ваши обычные строки C и сделать их CString.

person Luca Matteis    schedule 01.07.2010