当输入字符串长度为8,9,16,17,18时,输出末尾总带着乱码,希望大佬指出代码问题

#include <iostream>
#include <string.h>
using namespace std;
class MyStr{
public:
    MyStr(const char * s);
    ~MyStr();
private:
    int size;
    char * data=NULL;
};

MyStr::MyStr(const char * s){
    size=strlen(s);
    data=new char[size];
    for(int i=0;i<size;i++){
        data[i]=s[i];
    }
    cout<<data;
}

MyStr::~MyStr(){
    delete [] data;
}

int main(){
    char tempStr[20];
    cin>>tempStr;
    MyStr * s0 = new MyStr(tempStr);
    return 0;
}

 

new char[size+1]这么改

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html