вопрос о вариантах использования строк в C++
От: agendus  
Дата: 20.08.09 07:33
Оценка:
Здравствуйте, уважаемые форумчане.
Помогите разложить по полочкам и разобраться.

Вот есть стандартные 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-м случае немного утяжеляется. Как лучше все-таки?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.