Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Ошибка в strcpy в VC2005 |
Автор: torero 14.4.2009, 20:07 | ||
В программе написанной в 6-ой студии есть такие операторы: CString m_strText; // описана в документе. В CMyView.cpp
невозможно преобразовать параметр 2 из 'CString' в 'const char * ' Наверно это из-за Юникода, но что делать? |
Автор: Lazin 14.4.2009, 20:38 |
в настройках проекта, поменять Character set с Unicode на Not set |
Автор: Andrey44 15.4.2009, 07:24 | ||
А еще можно
|
Автор: Rickert 15.4.2009, 07:47 |
А ещё вообщем-то надо вызывать метод GetBuffer() у CString'а. |
Автор: vood 15.4.2009, 08:35 |
Использование m_strText.c_str() преобразует m_strText в const char *. Только тип m_strText должон быть string. |
Автор: Cheloveck 15.4.2009, 08:44 | ||
Проще всего использовать _tcscpy() из tchar.h и строки LPTSTR, а в литералах применять макрос типа _T("string"). Тогда компилироваться будит либо всё в юникод, либо всё в анси, в зависимости от параметров компилятора и объявленных макросов, и проблем не возникнет.
GetBuffer надо вызывать когда копируешь в CString, из него не нужно, так как первым элементом в классе всегда является указатель на строку и любая функция воспримет CString как обычную строку. |
Автор: Cheloveck 16.4.2009, 11:33 | ||
Это по факту. http://www.sofmos.com/lyosha/Articles/cstring.html написано. Я когда-то читал подобную статью, это кажется она. |
Автор: torero 17.4.2009, 07:54 |
Проверил все предложенные советы. Лучше всего мне подошла комбинация из двух: strcpy_s(pText,GlobalSize(hText),CW2A(pDoc->m_strText)); Всем большое спасибо за помощь. К сожалению "плюс" можно поставить только один. |
Автор: jonie 17.4.2009, 09:09 | ||||
|
Автор: Cheloveck 17.4.2009, 12:28 | ||||
GetBuffer позволяет вернуть массив любого размера, т.е. если у тебя буфер 10 символов, но ты хочешь записать 110, то говоришь, GetBuffer(110) и буфер автоматически увеличивается. |