نمایش نتایج 1 تا 10 از 10

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

  1. #1

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

    سلام

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

  2. #2
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    من یک راه رو پیشنهاد میکنم :

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

    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;

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

  3. #3
    ممکنه روش عکسش رو هم توضیح بدید ؟ یعنی char* به CString ؟

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

  4. #4
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    بله
    روش عکسش ساده تره شما میتونید به این صورت عمل کنید :

    char* mychar;
    CString mystr(mychar);

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

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

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


    موفق باشید

  5. #5
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884
    سلام

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

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    135
    برای خواندن یک مقدار 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
    خواهد بود.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    123

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

    سلام تابع های تبدیل از
    cstring به char* جواب نمید ه میشه یک تابع صحیح را اینجا قرار بدین
    جستجو هام جواب نمیده

  8. #8
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    123

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

    مخصوصا اینکه getbuffer زاشق* برنمیگردونه بلکه wchar* برمیگردونه

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    123

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

    سلام من کد زیر را پیدا کردم واقعا جواب داد لطفا اصلاح نمائید

    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;




    }

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    135

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

    اگر متد GetBuffer از کلاس CString به شما wchar_t را بر می گرداند ، پروژه شما حتما در مد unicode است. آنرا به Multi-Byte تغییر دهید درست خواهد شد.

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

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



قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •