Войти
ПрограммированиеФорумОбщее

Проблемы с строками

Страницы: 1 2 3 4 5 6 Следующая »
#0
16:36, 16 мая 2012

Всем привет!
Сегодня попробовал функции копирования строк и вот что вышло

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);

при вызове бокса такая хрень
Изображение
Скажите может я не так что то делаю.И как воабще совмещать строки со строкими числами и тп.

#1
16:39, 16 мая 2012

Smothik
LPCWSTR и char* - это разные вещи, их нельзя приводить друг к другу так просто.
Читай документацию

PS
Для работы с юникод-строками используй функции с приставкой/суффиксом 'W' (MessageBoxW например)
Для обычных - без

#2
16:49, 16 мая 2012

А во втором что?

сhar msgi = (char)"Exporting materials to " + (char)"Sample string";
MessageBox(NULL,(LPCWSTR)str3,(LPCWSTR)"sds",MB_OK);

В этом случае можно копировать строку на строку или числа тоже можно?И что я во втором деляю не правильно?

wsprintf() для юникода пойдет?

#3
16:54, 16 мая 2012

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);
#4
17:05, 16 мая 2012

И чем меня студия бесит надо приводить 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.Там же они как то делают.

#5
17:17, 16 мая 2012

Smothik
Если хочешь без проблем работать со строками, бери std::string. Там можно будет и складывать строчки без всяких проблем.
В огре через них все и сделано.

Как вариант, есть еще форматированный вывод (это для твоего простейшего случая - вывод строчки с числом)

char strBuffer[512];
int number = 500;
sprintf(strBuffer, "String and a value %d", number);
#6
17:50, 16 мая 2012

Лучше скажи где такую тему для Win7 нарыл )

#7
18:04, 16 мая 2012

cin
> И чем меня студия бесит надо приводить const char к char , Char[5] к char.Doble
> int к DWORD
> LPCWSTR к LPCWSTR.Бред не правдо ли
Студия не причём, енто с++, тоесть плата за более полный контроль над компьютером.

Использйу TCHAR и макрос T("") будет проще. Или ещё std есть, как кто-то свыше посоветовал.

#8
19:13, 16 мая 2012

Smothik
> И чем меня студия бесит надо приводить const char к char , Char[5] к char.Doble
> int к DWORD
> LPCWSTR к LPCWSTR.Бред не правдо ли

Как меня бесит MS Word что необходимо грамотно писать слова, а то подчеркивает красным. Бред не правдо ли %)

Это называется строгая типизация, придумано злобными монстрами С++ для того чтобы легко было отличать программистов от "программистов" :)
Студия абсолютно ни причем.

#9
19:20, 16 мая 2012

Smothik
LPCWSTR и char* - это разные вещи, их нельзя приводить друг к другу так просто.
Читай документацию

А где эту документацию найти можно ссылку

Smothik
Если хочешь без проблем работать со строками, бери std::string. Там можно будет и складывать строчки без всяких проблем.
В огре через них все и сделано.

А есть про него статья?

Лучше скажи где такую тему для Win7 нарыл )

http://win7design.ru/load/36-1-0-3191  Там еще много тем.Только для того что бы пропатчить нужен
7tsp.Вот ссылка http://win7design.ru/forum/4-140-1
А для студии есть плагин с помощью которого можно менять темы название не помню потом напишу

#10
20:38, 16 мая 2012

Smothik
> А есть про него статья?

http://www.cprogramming.com/tutorial/string.html
я думаю,разберешься.Если что-спрашивай.

#11
21:46, 16 мая 2012

Синие буквы на темном фоне это же вырвиглазно до жути.

#12
22:10, 16 мая 2012

Вот, что с людьми делает Си-стайл приведение типов... Нубов от него вообще стоит держать на расстоянии пяти ста километров.
Хотя, так бездумно приводить туда-сюда "сами не зная что" даже нубы обычно не рвутся. Автор, ты уверен, что хорошо высыпаешься?

#13
22:40, 16 мая 2012

eXmire
> Вот, что с людьми делает Си-стайл приведение типов... Нубов от него вообще
> стоит держать на расстоянии пяти ста километров.
Так сессия же началась видать, бестолковых студентов насильно заставляют писать кривые программы %)

#14
2:32, 17 мая 2012

outcast
Судя по орфографии, пациент - школоло 9 уровня.

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.