char شرح - مشغل جديد باستخدام شار في C++




string array (3)

لماذا لا يعمل هذا الرمز؟ فإنه يلقي خطأ وقت التشغيل دون أخطاء المترجم أو التحذيرات.

 int main(void) {

    char *korisnik = new char[20];
    korisnik = "Bizuterija";
    *(korisnik+1) = 'h'; // error here!
    cout << korisnik << endl;

    delete[] korisnik;


    return 0;
}

Answers

korisnik = "Bizuterija";

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

حاول نسخ محتوى السلسلة إلى الذاكرة المشار إليها بدلا من ذلك:

strncpy(korisnik, "Bizuterija", 20);

بالمناسبة، منذ كنت تعمل مع C ++، يجب عليك بالتأكيد استخدام std::string .


أود أن أقترح التحول إلى ستد :: سلسلة منذ كنت تستخدم c + +.

#include <string>
#include <iostream>
int main(int argc, char** argv) {
    std::string korisnik = "Bizuterija";
    korisnik[1] = 'h';
    std::cout <<korisnik <<std::endl;
    return 0;
}

جرب هذا: Character.toString(aChar) أو فقط هذا: aChar + ""







c++ char