新手字符数组有关问题

新手求助字符数组问题
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;            //释放内存
}