新手字符数组有关问题
新手求助字符数组问题
如上的程序先规定了用来储存字符的数组长度为10.想请教一下如果我想不归定字符数组的长度.然后根据输入的字符数来确定字符数组长度.应该怎么写????
------解决方案--------------------
最好使用string对象,自动管理内存,非常方便,
是C++中对C语言中字符数组的替代产品。
如果一定要使用字符数组的话,
需要自己管理内存,自己添加结束标记等等。
两者转换如下:
- C/C++ code
#include <iostream > using namespace std; int main() { int i; char a[10]; cout<<"请输入不超过10个字符 "; cin>>a; for (i=0;i<10;i++) cout<<a[i]; system("pause"); return 0; }
如上的程序先规定了用来储存字符的数组长度为10.想请教一下如果我想不归定字符数组的长度.然后根据输入的字符数来确定字符数组长度.应该怎么写????
------解决方案--------------------
最好使用string对象,自动管理内存,非常方便,
是C++中对C语言中字符数组的替代产品。
如果一定要使用字符数组的话,
需要自己管理内存,自己添加结束标记等等。
两者转换如下:
- C/C++ code
#include <iostream> #include <string> using namespace std; int main() { string str; cin >> str; //可以输入一个字符串, 遇到空白字符停止,空白字符包括空格,tab,回车 int len = str.size(); //计算长度 char *pStr = new char[len+1]; //动态申请内存,多一个字节用来放结束符 //拷贝数据到字符数组中 for( int i=0; i<len; i++) pStr[i] = str[i]; pStr[len]='\0'; //注意末尾要加结束符 //也可以使用函数 strcpy( pStr, str.c_str() ); //.c_str()函数可以把string对象转换成c语言的字符数组 //不过不可以修改,否则会破坏string对象,所以拷贝到其他地方 //输出 cout << str << endl; cout << pStr << endl; string str1 = pStr; //可以很方便的把字符数组转换成string对象 cout << str1; delete[] pStr; //释放内存 }