سؤال

ما هي المفضلة / أسهل طريقة للتلاعب سلاسل TDesC، على سبيل المثال للحصول على سلسلة فرعية.

وأنا سوف أعطيك مثالا على السيناريو الخاص بي.

RBuf16 buf;
...
CEikLabel label;
...
label->SetTextL(buf); // (SetTextL takes a const TDesC&)

وأنا ترغب في الحصول على سلسلة فرعية من BUF. لذلك لا أريد لمعالجة RBuf16 مباشرة وإذا كان الأمر كذلك ما هي أفضل وسيلة؟

هل هناك طريقة لتحويل لشار CONST * حتى أستطيع أن مجرد استخدام معيار التلاعب C سلسلة.

وشكرا مقدما

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

المحلول

وقراءة descriptors.blogspot.com (انتقل لأسفل مرة واحدة تحميل).

ويمكنك استخدام TDES :: LeftTPtr، TDES :: RightTPtr أو TDES :: MidTPtr التي سوف اعطيكم فرعية كما TPtr (أي واصف التي تعالج البيانات الأصلية).

ويمكنك استخدام TDES :: وظيفة نسخة إذا كنت ترغب في إنشاء نسخة من السلسلة الفرعية الخاصة بك.

نصائح أخرى

وأفضل أم لا، لا أستطيع التعليق، ولكن يمكنني استخدام الأساليب التالية لاستخراج سلاسل فرعية من واصفات:

TDes::LeftTPtr()
TDes::MidTPtr()
TDes::RightTPtr()

أو

TDesC::Left()
TDesC::Mid()
TDesC::Right()

ومع الفرق بين مجموعتي هو أن العوائد السابقة واصف للتعديل الجديد، وهذا الأخير، واصف جديد غير قابل للتعديل، يحتوي على السلسلة الفرعية.

وبينما كنت في وضع على منصة سيمبيان، أود أن أقترح للغاية لمتابعة الاتفاقيات سيمبيان، وعدم التفكير في سيمبيان C ++ من معيار C أو C ++ نقطة نظر في كل وقت. استخدام المكتبات التي سيمبيان وعلى وجه التحديد المتاحة، بدلا من / المكتبات القياسية C ++ C قد تكون أو لا تدعم سيمبيان مباشرة. منذ الهدف النهائي المتمثل في تطبيق وضعت على سيمبيان لتشغيل على جهاز محمول حيث موثوقية ومتانة من التطبيقات المسألة أكثر، يجب أن العصا إلى ما تفضل سيمبيان ويقترح.

إذا كنت ترغب في فرعية من RBuf16، وهذا هو بسيط - مجرد استخدام TDes16::MidTPtr

ويمكنك تحويل CONST شار * من خلال ذلك:

TPtr8 narrowBuf;

// Create a buffer with enough space to store every character, plus one for 
// a null terminator
narrowBuf.AllocL( buf.Length() + 1);

// TPtr8::Copy accepts a TDesC16 
narrowBuf.Copy( buf );

// Append a null terminator and return a pointer to the resultant data
const char* ptr = (const char*)narrowBuf.PtrZ();

ولكن ما لديك الآن هو نسخة الضيق من البيانات الأصلية. إذا كنت تريد الآن تعيين التسمية مرة أخرى، سوف تحتاج إلى توسيع عليه (TDes16 :: نسخة (CONST TDesC8 &)) قبل الاستخدام. في محاولة لجعل سيمبيان تبدو وكأنها C "طبيعية" ++ مع شار * وwchar_t * لا يعمل حقا - استخدام واصفات وراسخة جدا في نظام التشغيل

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