تغییر سایز خودکار وکتور بعد از گرفتن ورودی توسط cin ! - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تغییر سایز خودکار وکتور بعد از گرفتن ورودی توسط cin !

+1 امتیاز

مشکل این کد چیه ؟ :(

    int main()
    {
        std::vector<int> v;
        v.push_back(1);
        v.push_back(5);

        cout<<"SIZE : "<<v.size()<<"\n";   //prints 2...

        char str[4];
        printf("Input 4 random characters:");
        std::cin >> str;

        cout<<"SIZE : "<<v.size();
    }

من 4 تا حرف که وارد می کنم سایز وکتور خودکار زیاد میشه !!

سوال شده اسفند 11, 1392  بوسیله ی student (امتیاز 53)   3 8 11
دوباره تگ گذاری شد فروردین 20, 1393 بوسیله ی BlueBlade
در اجرا کردن من درست بود، توی چی کامپایل میکنی؟

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

شما وقتی که یک رشته 4 حرفی می خونی یک \0 هم آخرش گرفته میشه (اگر 4 حرف وارد کنی در اصل 5 حرف گرفته میشه ) یعنی باید str رو به این شکل تعریف کنی :

    char str[5];

دلیلی هم که سایز عوض میشه به خاطر اینه که احتمالا  اطلاعات وکتور بعد از آرایه ذخیره شدن شما وقتی که آرایه خونه 5 امشو عوض می کنی داری به قسمتای غیر مجاز حافظه دست میزنی .

پاسخ داده شده اسفند 11, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 11, 1392 بوسیله ی مصطفی ساتکی
...