PDA

View Full Version : CString رو چطور به * char تبدیل کنم؟



shima_sa
یک شنبه 25 فروردین 1387, 09:36 صبح
سلام

چطور میتونم CString رو به char* تبدیل کنم ؟
ممنون

A_Salimi
یک شنبه 25 فروردین 1387, 09:48 صبح
من یک راه رو پیشنهاد میکنم :

به این صورت عمل کنید:



CString mystr;
char ch[100];
sprintf(ch, "%s", mystr);

البته اگه از msdn استفاده میکنید ، در اونجا راههایی اومده مثلا این روش :




CString orig("Hello, World!");
wcout << orig << " (CString)" << endl;
// Convert to a char*
const size_t newsize = 100;
char nstring[newsize];
strcpy_s(nstring, orig);
strcat_s(nstring, " (char *)");
cout << nstring << endl;

لطفا تایپیک تکراری نزنید

shima_sa
یک شنبه 25 فروردین 1387, 10:22 صبح
ممکنه روش عکسش رو هم توضیح بدید ؟ یعنی char* به CString ؟

ضمنا من نمیخواستم تایپیک تکراری بزنم فقط اشتباها دو بار روی دکمه فرستادن پیام کلیک کردم!!!

A_Salimi
یک شنبه 25 فروردین 1387, 10:34 صبح
بله
روش عکسش ساده تره شما میتونید به این صورت عمل کنید :



char* mychar;
CString mystr(mychar);

الان mystr دارای تبدیل شده نوع mychar هست .

البته باز هم میتونید به msdn مراجعه کنید .



// Convert to a CString
CString cstring(orig);
cstring += " (CString)";
cout << cstring << endl;



موفق باشید

SMRAH1
دوشنبه 26 فروردین 1387, 18:27 عصر
سلام

راحت ترین راه تبدیل یک CString به char* استفاده از عملگر LPCTSTR کلاس CString است.

حسین محمدی
پنج شنبه 29 فروردین 1387, 12:56 عصر
برای خواندن یک مقدار CString توسط یک متغیر از نوع * char مناسبترین روش استفاده از متد GetBuffer در کلاس CString است.
برای مثال :


CString str = "Hello";
char *p = str.GetBuffer();
برعکس برای خواندن مقدار یک پوینتر از نوع char می توان به راحتی با دستور زیر به آن رسید:


char *p = "Hello";
CString str = p;
البته کلاس CString یک متد به نام Format دارد که توسط آن می توان مقادیر از انواع مختلف را توسط این کلاس خواند. مثلا:


CString str;
char *p = "hello";
int i = 20;
float f = 13.5;
str.Format("%s %d %f", p, i, f);
printf("%s", str.GetBuffer())
در این صورت خروجی برنامه به صورت


hello 20 13.500000
خواهد بود.

BraveMind
چهارشنبه 30 اردیبهشت 1388, 14:04 عصر
سلام تابع های تبدیل از
cstring به char* جواب نمید ه میشه یک تابع صحیح را اینجا قرار بدین
جستجو هام جواب نمیده

BraveMind
چهارشنبه 30 اردیبهشت 1388, 14:05 عصر
مخصوصا اینکه getbuffer زاشق* برنمیگردونه بلکه wchar* برمیگردونه

BraveMind
چهارشنبه 30 اردیبهشت 1388, 14:21 عصر
سلام من کد زیر را پیدا کردم واقعا جواب داد لطفا اصلاح نمائید


char* ConvertToChar(CString &OldCString)
{

//OldCString = _T("My Hello String"); // Data in Dummy String
char* ConvToChar = new char[OldCString.GetLength() + 2]; //Set Up Of char*
///////Important Bit//////////
size_t Converted = 0;
wcstombs_s(&Converted, ConvToChar, OldCString.GetLength()+1, OldCString, _TRUNCATE);
return ConvToChar;




}

حسین محمدی
چهارشنبه 30 اردیبهشت 1388, 15:56 عصر
اگر متد GetBuffer از کلاس CString به شما wchar_t را بر می گرداند ، پروژه شما حتما در مد unicode است. آنرا به Multi-Byte تغییر دهید درست خواهد شد.

برای این کار از پروژه خود properties گرفته و Character Set را تغییر دهید.

و اگر نمی خواهید پروژه خود را در حالت Multi-Byte کامپایل کنید از توابع
WideCharToMultiByte استفاده کنید و یا از MACRO های CW2C استفاده کنید.