更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org
#include<iostream>
#include<string>
using namespace std;
int main()
{
size_t arry_size = 10;
char * p_str = new char[arry_size];
int count =0;
char temp;
while(cin.get(temp))
{
count ++;
if(count+1 > arry_size)
{
char *p_temp = new char[++arry_size];
strcpy(p_temp,p_str);
delete [] p_str;
p_str = p_temp;
}
p_str[count-1] = temp;
}
p_str[count]= '\0';
for(size_t i =0 ;i <arry_size ; ++i)
{
cout<< p_str[i];
}
cout<<endl;
cout<<p_str<<endl;
delete [] p_str;
return 0;
}
==============================================================================
核心思路: 模拟c 中realloc()函数 , 但长度不够时, new 一个更大的数组, 老的数据拷贝过来, 老的空间释放掉, 老的指针指向新的空间
有一点要注意: 这里使用的输入是cin.get() ,因为直接cin>>temp 会将空格过滤掉
PS. C++ 中还是尽量使用string , 简单,方便, 除非要花样作死
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org
个人原创内容, 转载请注明来源!