Всем привет!
Сегодня попробовал функции копирования строк и вот что вышло
LPCWSTR str1=(LPCWSTR)"Sample string"; int i = 5; LPCWSTR str2[40]; LPCWSTR str3[40]; strcpy ( ( char *)str2,( char *)str1); strcpy ( ( char *)str3,"copy successful"); MessageBox( NULL,( LPCWSTR)str3,( LPCWSTR)"sds",MB_OK);
выдает какуюто абракадабру
Подскажите может надо использовать wsprintf()?
2.ППробовал копировать таким образом
har msgi = (char)"Exporting materials to " + ( char)"Sample string"; MessageBox( NULL,( LPCWSTR)str3,( LPCWSTR)"sds",MB_OK);
при вызове бокса такая хрень
Скажите может я не так что то делаю.И как воабще совмещать строки со строкими числами и тп.
Smothik
LPCWSTR и char* - это разные вещи, их нельзя приводить друг к другу так просто.
Читай документацию
PS
Для работы с юникод-строками используй функции с приставкой/суффиксом 'W' (MessageBoxW например)
Для обычных - без
А во втором что?
сhar msgi = (char)"Exporting materials to " + ( char)"Sample string"; MessageBox( NULL,( LPCWSTR)str3,( LPCWSTR)"sds",MB_OK);
В этом случае можно копировать строку на строку или числа тоже можно?И что я во втором деляю не правильно?
wsprintf() для юникода пойдет?
Smothik
Там вообще все неверно. Вот так будет работать
// ANSI char* str = "Exporting materials to 'Sample string'"; MessageBoxA(NULL,str,"sds",MB_OK); // Unicode wchar_t* str = L"Exporting materials to 'Sample string'"; MessageBoxW( NULL,str,L"sds",MB_OK); // TCHAR (тип символа выбирается по настройкам проекта) TCHAR* str = TEXT( "Exporting materials to 'Sample string'"); MessageBox( NULL,str,TEXT( "sds"),MB_OK);
И чем меня студия бесит надо приводить const char к char , Char[5] к char.Doble int к DWORD
LPCWSTR к LPCWSTR.Бред не правдо ли
wsprintf() для юникода пойдет?
Мне просто надо в переменную со строкой запихнуть число и другую строку.
Smothik
Там вообще все неверно. Вот так будет работать
for (int i = 0; i < numMaterials; ++i) { msMaterial *mat = msModel_GetMaterialAt( pModel, i); msg = "Creating material " + Ogre::String( mat->szName); logMgr.logMessage( msg); Ogre::MaterialPtr ogremat = matMgrSgl.create( mat->szName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); logMgr.logMessage( "Created."); ogremat->setAmbient( msVec4ToColourValue( mat->Ambient)); ogremat->setDiffuse( msVec4ToColourValue( mat->Diffuse)); ogremat->setSpecular( msVec4ToColourValue( mat->Specular)); ogremat->setShininess( mat->fShininess);
Это обрывок кода из плагина для Milkshape для ogre.Там же они как то делают.
Smothik
Если хочешь без проблем работать со строками, бери std::string. Там можно будет и складывать строчки без всяких проблем.
В огре через них все и сделано.
Как вариант, есть еще форматированный вывод (это для твоего простейшего случая - вывод строчки с числом)
char strBuffer[512]; int number = 500; sprintf(strBuffer, "String and a value %d", number);
Лучше скажи где такую тему для Win7 нарыл )
cin
> И чем меня студия бесит надо приводить const char к char , Char[5] к char.Doble
> int к DWORD
> LPCWSTR к LPCWSTR.Бред не правдо ли
Студия не причём, енто с++, тоесть плата за более полный контроль над компьютером.
Использйу TCHAR и макрос T("") будет проще. Или ещё std есть, как кто-то свыше посоветовал.
Smothik
> И чем меня студия бесит надо приводить const char к char , Char[5] к char.Doble
> int к DWORD
> LPCWSTR к LPCWSTR.Бред не правдо ли
Как меня бесит MS Word что необходимо грамотно писать слова, а то подчеркивает красным. Бред не правдо ли %)
Это называется строгая типизация, придумано злобными монстрами С++ для того чтобы легко было отличать программистов от "программистов" :)
Студия абсолютно ни причем.
Smothik
LPCWSTR и char* - это разные вещи, их нельзя приводить друг к другу так просто.
Читай документацию
А где эту документацию найти можно ссылку
Smothik
Если хочешь без проблем работать со строками, бери std::string. Там можно будет и складывать строчки без всяких проблем.
В огре через них все и сделано.
А есть про него статья?
Лучше скажи где такую тему для Win7 нарыл )
http://win7design.ru/load/36-1-0-3191 Там еще много тем.Только для того что бы пропатчить нужен
7tsp.Вот ссылка http://win7design.ru/forum/4-140-1
А для студии есть плагин с помощью которого можно менять темы название не помню потом напишу
Smothik
> А есть про него статья?
http://www.cprogramming.com/tutorial/string.html
я думаю,разберешься.Если что-спрашивай.
Синие буквы на темном фоне это же вырвиглазно до жути.
Вот, что с людьми делает Си-стайл приведение типов... Нубов от него вообще стоит держать на расстоянии пяти ста километров.
Хотя, так бездумно приводить туда-сюда "сами не зная что" даже нубы обычно не рвутся. Автор, ты уверен, что хорошо высыпаешься?
eXmire
> Вот, что с людьми делает Си-стайл приведение типов... Нубов от него вообще
> стоит держать на расстоянии пяти ста километров.
Так сессия же началась видать, бестолковых студентов насильно заставляют писать кривые программы %)
outcast
Судя по орфографии, пациент - школоло 9 уровня.
Тема в архиве.