ما هي أبسط طريقة لتحويل char[] إلى/من tchar[] في C/C++(ms)؟

StackOverflow https://stackoverflow.com/questions/159442

  •  03-07-2019
  •  | 
  •  

سؤال

يبدو هذا سؤالًا لطيفًا، ولكن دائمًا ما أجد صعوبة في البحث عن هذه الوظيفة لأنه يبدو أن هناك العديد من الاختلافات فيما يتعلق بالإشارة إلى char وtchar.

هل كانت مفيدة؟

نصائح أخرى

إن أبسط طريقة هي استخدام وحدات ماكرو التحويل:

  • CW2A
  • CA2W
  • إلخ...

MSDN

وTCHAR هو typedef ومايكروسوفت محددة إما حرف أو wchar_t (شخصية واسعة).

والتحويل إلى شار يعتمد على أي من هذه هو عليه في الواقع. إذا TCHAR هو في الواقع شار، ثم يمكنك أن تفعل يلقي بسيطة، ولكن إذا كان هو حقا wchar_t، عليك ان تحصل على روتين للتحويل بين مجموعات الأحرف. رؤية MultiByteToWideChar وظيفة ()

وهناك عدد قليل من الإجابات في هذا المنصب أيضا، خاصة إذا كنت تبحث عن حل عبر منصة:

UTF8 إلى / من تحويل شار واسعة في STL

على الرغم من أنني أعتقد في هذا الموقف بالذات أن Tchar شخصية واسعة، فلن أحتاج إلا إلى إجراء التحويل إذا لم يكن كذلك.الذي يجب علي التحقق منه بطريقة أو بأخرى.

if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

والشيء الرائع في ذلك هو أن كلا الحجمين المتساويين هما ثوابت، مما يعني أن المترجم سيتعامل (ويزيل) if()، وإذا كانا متساويين، قم بإزالة كل شيء داخل الأقواس

وهنا هو رمز CPP يكرر _TCHAR * ARGV [] إلى شار * argn [].

http://www.wincli.com/؟p=72

إذا كنت تبني القانون القديم إلى نظام التشغيل Windows، واستخدام بسيط تحديد المذكورة في الكود كما اختياري.

ويمكنك وضع شرط في التعليمات البرمجية

وifdef _UNICODE

{// نحب TCHAR هو CHAR واسعة} ELSE {// نحب TCHAR هو CHAR}

وأنا أدرك هذا هو موضوع قديم، ولكن ذلك لم يحصل لي "حق" الجواب، لذلك أنا إضافته الآن.

وهذا الطريق يبدو أن عمله الآن هو استخدام الماكرو TEXT. على سبيل المثال لFindFirstFile في نقاط MSDN ذلك. http://msdn.microsoft كوم / EN-US / مكتبة / ويندوز / المكتبي / aa364418٪ 28V = vs.85٪ 29.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top