谢谢你的回复,不过那不符合题目的意思。题目要求做到内存最优化。你那样是浪费内存。麻烦哪位帮我改进下面的程序//根据输入的字符串长度分配相应大小的存储区#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; }}
非常感谢5楼的,我刚刚接触C++,那是我写的第一个C++程序,C++还有很多没学到,希望多多指教。
我学完了C。