首页 新闻 搜索 专区 学院

求解,输出结果乱码?

0
悬赏园豆:10 [已关闭问题] 关闭于 2011-11-11 15:32

读入一组string类型的数据,并将它们存储在vector中。 接着,把该vector对象复制给一个字符指针数组。 为vector中的每个元素创建一个新的字符数组,  并把该vector元素的数据复制到相应的字符数组中, 最后把指向该数组的指针插入字符指针数组。

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
   vector<string> svec; 
    string str; 
     // 输入vector元素 
     cout << "Enter strings:(Ctrl+Z to end)" << endl; 
     while (cin >> str) 
         svec.push_back(str); 

      // 创建字符指针数组 
     char **parr = new char*[svec.size()];
     size_t ix = 0;
     for(vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter, ++ix)  {
       // 创建字符数组 
       char *p = new char[(*iter).size()+1];  

      // 复制vector元素的数据到字符数组 
        strcmp(p,(*iter).c_str());
        // 将指向该字符数组的指针插入到字符指针数组 
        parr[ix] = p;
     }
     //输出这些指针数组中的元素
    for(ix = 0; ix != svec.size(); ++ix)
      cout << parr[ix] << endl; 
     // 释放各个字符数组 
     for(ix = 0; ix != svec.size(); ++ix)
      delete [] parr[ix]; 
     delete [] parr;
       system("pause");
       return 0;

}

输出结果:

 不知哪位大侠可以帮我解释一下,为什么输出的结果是乱码?我做过测试,vector对象中的元素,可以正常输出,但是要字符指针数组输出的结果就乱码了?

小生在这里谢谢各位了。

希望花开的主页 希望花开 | 初学一级 | 园豆:179
提问于:2011-11-11 15:17
< >
分享
所有回答(1)
0

strcmp(p,(*iter).c_str());这是字符串比较,不是字符串复制。请使用strcpy。

hoodlum1980 | 园豆:543 (小虾三级) | 2012-06-07 16:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册