تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: تبديل متغيري از جنس String به Achar

  1. #1
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    پيش فرض تبديل متغيري از جنس String به Achar

    سلام دوستان

    من با Vs C++.net2003‌ كار مي كنم . و مي خوام يك متغيري رو كه از جنس رشته(string ) است رو به نوع

    Achar تبديل كنم يا به عبارت ديگه اونو به عنوان آرگومان تابعي به كار ببرم كه اون تابع ارگوانهاش از نوع

    Achar هستند كسي مي دونه چطور مي شه اين تبديل رو انجام داد؟

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    فکر میکنم یه مقدار سوالتون برای سایر دوستان عجیب باشه.
    از این بابت میگم چون نوع ACHAR ممکنه برای دوستان آشنا نباشه.
    پس بهتره اول در مورد ACHAR صحبت کنیم.
    برنامه نویسان ++C با نوع WCHAR آشنا هستند. البته کسانی که برای Windows برنامه
    می نویسن بیشتر با این نوع آشنا هستند.
    میدونیم که char یه نوع 8 بیتی هست که برای نگهداری character ها به کار میره.
    WCHAR همون char هست منتها با طول 16 بیت که برای ذخیره کردن Unicode ها به کار میره.
    به شکل زیر تعریف شده :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خب حالا بر میگردیم به ACHAR .
    ACHAR در واقع همون WCHAR هست اما در ArxSDK به جای WCHAR از ACHAR استفاده شده.

    اول این حالت رو بررسی می کنیم که میخواین ACHAR رو به String تبدیل کنین.
    کد زیر این کار رو انجام میده :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و این تابع به شکل زیر میتونه استفاده شه :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    اما در مورد اینکه String رو به AHCAR تبدیل کنین مقداری قضیه پیچیده تر هست.
    در اینجا قرار هست شما از Managed به unmanaged به اصطلاح مهاجرت کنین.
    در این صورت باید با Marshaling آشنا باشین.
    در کلاس Marshal متودی وجود داره به نام StringToHGlobalUni که String رو (که تایپ مدیریت شده هست)
    رو به فضای مدیریت نشده کپی میکنه. به عبارت دیکه مقدار فضا از حافظه ی مدیریت نشده به اون
    اختصاص میده. بعد از استفاده از این متود ، باید فضای اشغال شده رو آزاد کرد که با استفاده از متود
    FreeHGlobal میشه این کار رو انجام داد.
    خب متود زیر این کار رو انجام میده.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    البته با توجه به استفاده از Unicode و ماکروهای استفاده شده ممکنه ACHAR به صورت char هم
    تعریف شده باشه در این صورت از کد بالا با کمی تغییر میشه استفاده کرد.


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    سعی کردم خوب توضیح بدم ، اگه جاییش واضح نبود در موردش صحبت میکنیم.

  3. این کاربر از someone بخاطر این مطلب مفید تشکر کرده است


  4. #3
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    پيش فرض

    سلام

    ممنون از كمك هاتون

    چون گفتيد اين موضوع براي دوستان عجيب به نظر مي رسه . بهتر ديدم ادامه بحث رو اينجا دنبال نكنيم . در مورد تست كردن روش شما در mail‌ براتون جواب رو نوشتم

  5. #4
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2009
    پست ها
    48

    پيش فرض

    سلام
    لطفا تبدیل string به آرایه ای از char را هم توضیح دهید فقط در محیط
    win32 console Application نه CLR Console

  6. #5
    پروفشنال
    تاريخ عضويت
    May 2006
    محل سكونت
    کرج
    پست ها
    746

    پيش فرض

    چون گفتيد اين موضوع براي دوستان عجيب به نظر مي رسه
    چرا فکر میکنید که این موضوع برای دوستان عجیب بنظر می رسه؟از جانب دوستان فرمودید که عجیبه یا از جانب خودتون؟

  7. #6
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    سلام
    لطفا تبدیل string به آرایه ای از char را هم توضیح دهید فقط در محیط
    win32 console Application نه CLR Console
    از تابع c_str کلاس string استفاده کنین . یا یدونه یدونه از 0 تا length کپی کنین توی یدونه * char .

  8. #7
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2009
    پست ها
    48

    پيش فرض

    از تابع c_str کلاس string استفاده کنین . یا یدونه یدونه از 0 تا length کپی کنین توی یدونه * char .
    به طور مثال
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    وقتی توی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کپی میکنم بعدا که a را چاپ میکنم (
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ) علا وه بر چاپ ABCD چیزای دیگه هم چاپ میکنه
    شاید بگید که برای cout هم یک حلقه بزارم که بیشتر از ABCD چاپ نکنه ولی نمیخوام این کار را بکنم چون در آخر این char را میخوام به یک تابع دیگه بفرستم

  9. #8
    پروفشنال
    تاريخ عضويت
    May 2006
    محل سكونت
    کرج
    پست ها
    746

    پيش فرض

    هر دو راهی که sin2x=2sinxcosx گفتن قابل پیاده کردن اما استفاده از c_str کوتاه تره و احتیاج به کنترل کردن هم نداره.البته c_str اشاره گر ثابت بر می گردونه که باید توجه کرد.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •