باستخدام QString تحصل على أحرف غريبة في الإخراج

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

  •  27-10-2019
  •  | 
  •  

سؤال

int a=0;
while (a<2)
{
    //infos.stops is point to one array, called abc[10]

    output = output + QString::fromStdString(*infos.stops)+ "." ;

    infos.stops++;
    a++;
}
ui->showMsg->setText(output);

المشكلة هي أن infos.stops قد ظهر، ولكن ظهرت بعض الشخصيات المضحكة مثل:

enter image description here

لقد قمت بتحميل كافة التعليمات البرمجية المصدر الخاصة بي والتي تم تصميمها في QT Designerhttp://uploading.com/files/eaddfaf8/bus.zip/خط المشكلة موجود في سطر manager.cpp 133.

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

المحلول

جرب استخدامoutput = output + QString::fromStdString(*(infos.stops))+ "." ;

نصائح أخرى

أعتقد أنني قمت بحلها بعد اختبار قليل لتطبيقك.مقطع التعليمات البرمجية التالي يجب افعلها:

          output = output+ "Stops travelled: ";
          for(int a = 0; a < infos._numstops; ++a)
          {
              if(a)
                  output += ", ";
              output = output + QString::fromStdString(infos.stops[a]);
          }
          output = output + "<br>";

لاحظ أن لديك العضو infos._numstops متاح ويجب استخدامه.ال if(a) إنها خدعة جيدة إذا كنت تريد إخراج قائمة مفصولة بفواصل.

(لقد قمت بتشغيل تطبيقك ولاحظت أن ملف info لا يتضمن الهيكل نقطة التوقف حيث تبدأ طريقك، بل النقطة التي ينتهي عندها.يجب عليك تضمين نقطة البداية في الإخراج أو استبعاد نقطة التوقف المستهدفة.لاحظ كذلك أن += عامل التشغيل كما هو الحال في if-body هو طريقة شائعة لإلحاق السلاسل.)

في manager.cpp:103 أنت تتصل بـ DE1.cost(X,Y).تقوم هذه الطريقة بإنشاء مصفوفة std::string (تم تمريرها) على المكدس (datzz.cpp:432) وفي datzz.cpp:502 تفعل ذلك

c.stops = passed;

الذي يخزن مؤشرًا لكتلة ذاكرة مخصصة على المكدس في متغير التوقفات لمثيل DatzEzy::info الخاص بك c.عندما تعود تكلفة الطريقة (سلسلة، سلسلة)، يتم تحرير الذاكرة المخصصة للتمرير وستكون مخرجاتك غير مرغوب فيها.لا تقم مطلقًا بتخزين المؤشرات لتكديس الكائنات المخصصة.

بالمناسبة، يجب أن تفكر في استخدام مراجع const عند تمرير سلاسل (للقراءة فقط) في استدعاءات الوظائف، مما يتجنب النسخ المكلف.

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