谢谢你的回复,不过那不符合题目的意思。题目要求做到内存最优化。你那样是浪费内存。麻烦哪位帮我改进下面的程序
//根据输入的字符串长度分配相应大小的存储区
#include<iostream>;
using namespace std;
void main(){
int i=0,j=0;
char ch,*p;
cout<<"输入任意的字符串:"<<endl;
while( cin.get(ch)!='13'){
i++;
}
p=new char[i];
cout<<"输入上次输入的字符:"<<endl;
for(j;j<i;j++)
cin>>*(p+j);
for(j=0;j<i;j++)
cout<<*(p+j);
delete p;
}
#include<iostream>;
using namespace std;
void main(){
int i=0;
char *p;
cout<<"输入任意的字符串:"<<endl;
while( cin.get()!='\n'){
i++;
}
p=new char[i+1];
cout<<"输入上次输入的字符:"<<endl;
cin.getline(p,i+1);
cout<<p<<endl;
delete[] p;
}
这样的确是可以,但要输入两次.
#include<iostream>;
using namespace std;
void main(){
int i=0;
cout<<"输入任意的字符串:"<<endl;
if(cin.get()!= '\n')
{
i = cin.gcount(); // 这里只能得到最后所输入的字符数.不能得到全部输入的字符数.所这个方法也不可.
// 如果可以得到全部输入的字符数,就更完美啦.
cin.unget();
char *p=new char[i+1];
cin.getline(p, i+1);
cout<<p<<endl;
delete[] p;
}
}