Мне нужно, чтобы strncpy()
(эффективно) от (Редактировать: MFC) Объект CString для строковой переменной C. Хорошо известно, что иногда strncpy()
терпит неудачу (в зависимости от длины источника ** EDIT и длины, указанной в вызове), чтобы правильно завершить строку dest C. Чтобы избежать этого зла, я собираюсь хранить символ NUL внутри исходного объекта CString, а затем до strcpy()
или memmove()
того парня.Какова внутренняя структура объекта класса (EDIT: MFC) CString?
Действительно ли это разумный способ? Если да, то чем я должен манипулировать внутри объекта CString? Если нет, то какая альтернатива будет гарантировать правильную конечную строку C назначения?
'CString' не существует в стандартной библиотеке C++. Вы говорите о 'std :: string' или что-то еще (возможно,' CString' из [MFC] (http://msdn.microsoft.com/en-us/library/5bzxfsea (v = vs.100) .aspx))? – spencercw
Не можете ли вы просто преобразовать его в 'std :: string'? Например: 'std :: string cppString (yourCString);'. Если вам действительно нужна необработанная строка, получите ее из 'cppString.c_str()'. Просто будьте осторожны, некоторые конверсии Unicode не будут работать. – jweyrich
Вы должны обязательно использовать std :: string в предпочтении CString почти во всех случаях. – 111111