CString для обугливания*

Ваш код в порядке, подсказка не исчезает, возможно, это из-за ваших комбинаций цветов TextInputLayout и фона, попробуйте использовать некоторые яркие цвета.

Скриншот вашего кода

изменил его немного и поместил в линейный макет.



    
        
    


    

17
задан Synetech 13 April 2012 в 02:07
поделиться

4 ответа

Если Ваши функции только требуют чтения строки и не изменения его, изменяют их для принятия const char * вместо char *. Эти CString автоматически преобразует для Вас, это - то, как большая часть MFC функционирует работа, и это действительно удобно. (На самом деле использование MFC LPCTSTR, который является синонимом для const TCHAR * - работает и на MBC и на сборки Unicode).

, Если необходимо изменить строку, GetBuffer(0), очень опасно - она не обязательно выделит достаточно памяти для получившей строки, и Вы могли получить некоторые ошибки переполнения буфера.

, Как был упомянут другими, необходимо использовать ReleaseBuffer после GetBuffer. Вы не должны делать этого для преобразования в const char *.

24
ответ дан 30 November 2019 в 11:52
поделиться

когда Вы вызываете getbuffer функцию, она выделяет память для Вас. когда Вы сделали с ним, необходимо назвать releasebuffer для освобождения его

3
ответ дан 30 November 2019 в 11:52
поделиться

попробуйте документацию в http://msdn.microsoft.com/en-us/library/awkwbzyc.aspx для справки на этом.

1
ответ дан 30 November 2019 в 11:52
поделиться

@ ОП: >>> Полагаю, нас беспокоят только утечки памяти или что-то еще ...

Привет, вызов метода GetBuffer не приведет к утечкам памяти. Потому что деструктор все равно освободит буфер. Однако другие уже предупреждали вас о потенциальных проблемах с вызовом этого метода.

@Can >>> когда вы вызываете функцию getbuffer, она выделяет вам память.

Это утверждение не совсем верно. GetBuffer (0) НЕ выделяет память. Он просто возвращает указатель на внутренний строковый буфер, который можно использовать для управления строкой непосредственно "вне" класса CString.

Однако, если вы передаете число, скажите ему N, как GetBuffer (N), и если N больше текущей длины буфера, Раджеш. MVP, Visual ++.

8
ответ дан 30 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: