2009-06-18 1 views
2

Предположим, у меня есть переменная CString, несущая строку «Bob Evans». Я хочу, чтобы скопировать из позиции 4 до конца исходной CString к новому CString, но у меня возникли проблемы с поиском примеров семантики для этого:mfc копировать определенные разделы CString

CString original("Bob Evans"); 
// Below is what I'm trying to do 
// CString newStr = original.copy(4, original.GetLength()); 

Я также думал о копировании переменной оригинальный к STL C++, но достижение этого не так просто или с точки зрения преобразования. Каким будет ваш совет по этому поводу? Я мог бы заставить строку быть сохраненной в STL-строке для начала, но это было бы одним из последних, поскольку я не хотел реструктурировать много кода, просто чтобы сохранить данные в STL-строке вместо CString. Заранее спасибо.

ответ

7
newStr = original.Mid(4); 
+0

Спасибо. Функция Mid работает очень хорошо для меня. Довольно неудобно для меня, почему Microsoft называет эту функцию Mid(). – stanigator

+1

У них есть .Left, .Mid и .Right - имеет смысл, как только вы начнете их использовать. –

0

Это не все, что трудно превратить CString в стандартную строку; единственный глюк в том, что вы, вероятно, используете Unicode, если вы берете настройки по умолчанию для своей программы MFC. Это означает, что вы захотите использовать std::wstring вместо std::string.

Я не тестировал это, но я думаю, что преобразования по умолчанию позволят этому «просто работать». В противном случае добавьте CString в LPCTSTR.

std::wstring copyOfOriginal(original);