char arr[]={34,24,63,5,5,0,53,42,42,424};
string str=arr;
arr 中间有个0,被截断了

解决方案 »

  1.   

    memcpy(str,arr,10);
    知道截断了还拷,牛B啊你
    拷过去了又有啥用?????还不是截断的.
    你到底想干啥,编程呢还是逗乐
      

  2.   

    string 中是不能有 0 的
      

  3.   

    string是字符串,意味着遇到'\0'(ascii码值为0)就会结束。所以如果想处理这种数据,只有使用内存拷贝。最好是用一个数组来保存,但是要记录有效的有多少。
      

  4.   

    char arr[]={34,24,63,5,5,0,53,42,42,424};
    你这个是字符串数组??里面还有424这个元素?都超过char的范围了
      

  5.   

    对string没这么搞过.但
    其实CString 内部是不管是否有0的..
    所以你可以用CString.char arr[]={34,24,63,5,5,0,53,42,42,424};
    int len = 长度你自己算啊..晕了;
    CString str;
    memcpy(str.GetBuffer(len),arr,len);str.ReleaseBuffer();
    OK了.但你要用的时候,也得重新复制出来,哈哈.
      

  6.   

    LZ是要把字符数组放到string中去,这和楼主的观点不符啊
    typedef basic_string<char> string;
    这是STL中的一个类,存放字符串用,中间是不能带'\0'的,所以LZ的问题在实际中不会出现!