Здравствуйте, уважаемые форумчане.
Помогите разложить по полочкам и разобраться.
Вот есть стандартные C-строки, представляемые как массив char/wchar_t.
Есть контейнеры в STL для работы со строками, есть класс CString в MFC.
Можно еще и свой класс-обертку написать.
Когда какой вариант лучше использовать?
Вот например, пишу я приложение на VC++, без использования MFC.
Есть классы, поля которых содержат строковые данные. Чтобы не утяжелять класс, это поле определяется типом не std::wstring, а просто LPWSTR.
Так вот, сначала такие поля я обрабатывал стандартными функциями C для работы с C-строками. Потом надоело писать каждый раз громоздкие операторы типа
TCHAR chTemp[MAX_PATH];
wcscpy(chTemp, vNode.m_sItemFullName); // запоминаем полное имя тэга
wcscpy(vNode.m_sItemFullName, vParentNode.m_sItemName);
wcscat(vNode.m_sItemFullName, TAG_SEPARATOR);
wcscat(vNode.m_sItemFullName, chTemp);
и я стал делать вот так:
std::wstring strTemp;
strTemp.assign(vNode.m_sItemFullName); // запоминаем полное имя strFullID.append(vParentNode.m_sItemName);
strFullID.append(TAG_SEPARATOR);
strFullID.append( strTemp.c_str() );
Делается все одно и тоже, просто во 2-м случае немного утяжеляется. Как лучше все-таки?