|
0 / 2 / 1
Регистрация: 14.02.2011
Сообщений: 100
|
||||||
Как CString преобразовать к нормальной строке?15.01.2012, 15:02. Показов 2868. Ответов 8
Метки нет (Все метки)
0
|
||||||
| 15.01.2012, 15:02 | |
|
Ответы с готовыми решениями:
8
Ошибка. Невозможно преобразовать CString в float |
|
Silver
|
||
| 15.01.2012, 18:16 | ||
|
Что-то типа такого:
|
||
|
0 / 2 / 1
Регистрация: 14.02.2011
Сообщений: 100
|
|
| 18.01.2012, 14:32 [ТС] | |
|
Вопрос вроде бы отпал, но все-равно на это:
lvi.pszText = (LPSTR)s; компилятор ругается, а на это: _tcscpy(lvi.pszText, s); не ругается.
0
|
|
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
| 18.01.2012, 20:43 | |
|
(LPCSTR)s, (LPSTR)((LPCSTR)s)
или универсальные: (LPCTSTR)s или (LPTSTR)((LPCTSTR)s) а с копированием tcscpy надо быть поосторожнее, вдруг буфер lvi.pszText будет меньше чем строка s вообще в С++ при работе со строками следуют для начала понять: где происходит выделение массива символов, и кто заботиться о его удалении, а потом начинать манипуляции, не забывая о том что строка - это не бесконечный набор символов, а массив ограниченной длинны (к классам CString и string вышесказанное не относится) Удачи, Владимир
0
|
|
|
Silver
|
||
| 19.01.2012, 10:23 | ||
|
ВЫ невнимательны, друзья мои!
Я говорил не о ПРИВЕДЕНИИ к типу LPSTR - (LPSTR)s, а об операторе LPCSTR(s). Видите разницу? А вот первоисточник, дабы не быть голословным:
|
||
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
| 19.01.2012, 11:47 | |
|
Silver, ты сам невнимателен!
![]() Ты говорил не об операторе LPCTSTR, а об операторе LPCSTR, первым про LPCTSTR сказал я! хе-хе. Впрочем, если компилировать не для Unicode, то это одно и тоже, хотя я бы рекомендовал писать LPCTSTR, мало ли, вдруг придется перекомпилировать программу в Unicode в скором времени. Кстати про приведение и оператор... для C++ - это одно и то же. При приведении к типу LPCTSTR объекта класса CString будет вызван оператор LPCTSTR данного класса В твоем же описаннии, что ты вырезал из MSDN, написано в самом первом предложении "This useful casting operator". casting - это и есть приведение типов по-английски.С уважением, Владимир
0
|
|
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
| 19.01.2012, 11:56 | |
|
P.S. ошибка при компиляции у arist''а возникала скорее всего потому, что он приводил к LPSTR, а не к LPCSTR/LPCTSTR. Ключевым здесь являлась буква C - constant. У класса CString нет оператора который бы приводил к указателю на буфер который можно было бы изменять, только на неизменяемый (отюсда C).
Но структура LVITEM требует именно pszText - изменяемую строку (даже если она не меняет эту строку, так сложилось, исторически ), поэтому LPCSTR не подойдет. Есть 2 способа, можно схитрить и привести LPCSTR повторно к LPSTR, а можно создать новый буфер, скопировать в него строку и передать структуре LVITEM.Я бы пошел вторым путем, хотя первый выглядит быстрее с точки зрения реализации, хотя и менее безоспасным. arist почти добрался до второго способа, хотя я не увидел, где происходит выделение буфера, в коде приведен только оператор копирования. Если arist не выделяет массив символов, то у него могут возникнуть проблемы в будущем при работе его программы. э-эх..
0
|
|
|
Silver
|
||
| 19.01.2012, 13:17 | ||
|
Я написал "типа", так как точно не помнил.
|
||
|
0 / 2 / 1
Регистрация: 14.02.2011
Сообщений: 100
|
|
| 20.01.2012, 08:13 [ТС] | |
|
За кого вы меня держите! :-)
Естественно где-то в моих многоточиях есть оператор типа lvi.pszText = new char[100]; Спасибо за подробные разъяснения.
0
|
|
| 20.01.2012, 08:13 | |
|
Помогаю со студенческими работами здесь
9
Как преобразовать long 12345 в CString "12345"?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|