把该 vector 对象复制给一个字符指针数组。为 vector 中的每个元素创建一个新的字符数组.

把该 vector 对象复制给一个字符指针数组。为 vector 中的每个元素创建一个新的字符数组.,第1张

你可以这么理解:

定义的时候,是char **str,那么cout<<**str的时候,**str就是个char。

既然**str是char,输出的当然就只有一个字符了。

另外还有其他问题,我就不一一列出了。

见注释。

#include<iostream>

#include<vector>

#include<string>

using namespace std

int main()

{

    string s

    cout<<"请输入字符串"

    vector<string>ivec

    while(cin>>s)

        ivec.push_back(s)

    char **str=new char* [ivec.size()]

    size_t index=0

    for(vector<string>::iterator ix=ivec.begin()ix<ivec.end()ix++,index++)    //for循环里index没有++

    {

        char *tp=new char [(*ix).size() + 1]    //注意要多申请一个空间,用于存放'\0'

        strcpy(tp,(*ix).c_str())

        str[index]=tp

    }

    for (int i = 0 i < ivec.size() ++i)

    {

        cout<<str[i] << "\n"    //str是个char**,那么str[i]是个char*,这样才能输出字符串

    }

    return 0

}

程序运行结果示意:

请输入字符串1111

222

3333

444

^Z

1111

222

3333

444

Press any key to continue

1、可以从数组构造

比如int a[] = { 0,1,3,5,6,4,2.... }

vector<int>v( a, a + sizeof( a ) / sizeof( a[0] ) )

2、动态添加就只有用push_back了

可以用resize预置vector的容量,这样就能免除push_back由于空间超过默认分配的定量内存时而重分配更大的一块新空间并把原内容重新拷过去所带来的效率损失,vector内部自动维护了一块定量的内存,这个空间可以用capacity()方法查看。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11613764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存