直接用指针指向输入的字符串解决思路

直接用指针指向输入的字符串
就是不要先用一个数组存 再用指针指向这个数组
网上查了一个方法
string tmp;
cin>>tmp;
const char* q=tmp.data();
cout<<q;

但是遇到中间有空格 比如说 asd asd 这样就只输入asd 有什么办法能将整个字符串都储存下来

还有一个问题 有没有办法将一个静态数组里面的元素清空 就想是改建立但没有初始化的样子

------解决方案--------------------
cin.getline(tmp);