سلام
چطور میتونم CString رو به char* تبدیل کنم ؟
ممنون
Printable View
سلام
چطور میتونم CString رو به char* تبدیل کنم ؟
ممنون
من یک راه رو پیشنهاد میکنم :
به این صورت عمل کنید:
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;
لطفا تایپیک تکراری نزنید
ممکنه روش عکسش رو هم توضیح بدید ؟ یعنی char* به CString ؟
ضمنا من نمیخواستم تایپیک تکراری بزنم فقط اشتباها دو بار روی دکمه فرستادن پیام کلیک کردم!!!
بله
روش عکسش ساده تره شما میتونید به این صورت عمل کنید :
char* mychar;
CString mystr(mychar);
الان mystr دارای تبدیل شده نوع mychar هست .
البته باز هم میتونید به msdn مراجعه کنید .
// Convert to a CString
CString cstring(orig);
cstring += " (CString)";
cout << cstring << endl;
موفق باشید
سلام
راحت ترین راه تبدیل یک CString به char* استفاده از عملگر LPCTSTR کلاس CString است.
برای خواندن یک مقدار CString توسط یک متغیر از نوع * char مناسبترین روش استفاده از متد GetBuffer در کلاس CString است.
برای مثال :
برعکس برای خواندن مقدار یک پوینتر از نوع char می توان به راحتی با دستور زیر به آن رسید:
CString str = "Hello";
char *p = str.GetBuffer();
البته کلاس CString یک متد به نام Format دارد که توسط آن می توان مقادیر از انواع مختلف را توسط این کلاس خواند. مثلا:
char *p = "Hello";
CString str = p;
در این صورت خروجی برنامه به صورت
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
سلام تابع های تبدیل از
cstring به char* جواب نمید ه میشه یک تابع صحیح را اینجا قرار بدین
جستجو هام جواب نمیده
مخصوصا اینکه getbuffer زاشق* برنمیگردونه بلکه wchar* برمیگردونه
سلام من کد زیر را پیدا کردم واقعا جواب داد لطفا اصلاح نمائید
char* ConvertToChar(CString &OldCString)
{
//OldCString = _T("My Hello String"); // Data in Dummy String
char* ConvToChar = newchar[OldCString.GetLength() + 2]; //Set Up Of char*
///////Important Bit//////////
size_t Converted = 0;
wcstombs_s(&Converted, ConvToChar, OldCString.GetLength()+1, OldCString, _TRUNCATE);
return ConvToChar;
}
اگر متد GetBuffer از کلاس CString به شما wchar_t را بر می گرداند ، پروژه شما حتما در مد unicode است. آنرا به Multi-Byte تغییر دهید درست خواهد شد.
برای این کار از پروژه خود properties گرفته و Character Set را تغییر دهید.
و اگر نمی خواهید پروژه خود را در حالت Multi-Byte کامپایل کنید از توابع
WideCharToMultiByte استفاده کنید و یا از MACRO های CW2C استفاده کنید.