vector能转char*吗?如何转?谢谢

woaimm123456 2007-11-21 10:00:41
rt
...全文
1832 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
muymuy 2007-11-21
  • 打赏
  • 举报
回复
vector是一个动态数组,如果定义为vector<char>,则是一个char数组。
要获取这个char数组的头指针很简单:


vector<char> array;
char * p = array.begin();//兼容性不好,某些stl下,不能这样写
或者:
char * p = &(*array.begin());//可以兼容所有stl,但是很难看
最好是:
char * p = &array.at(0);//简单明了,而且可以兼容所有stl


不过,使用指针p时,要特别小心,一方面要考虑越界问题,另外一方面还要考虑,当vector的size改变后,指针p已经无效,需要重新赋值。
xugang_2001 2007-11-21
  • 打赏
  • 举报
回复
STL的知识,1,3楼的可以了,楼上的操作不建议
penny_liuy 2007-11-21
  • 打赏
  • 举报
回复
vector<char> 可以转换为 char *。方法如下:

vector<char> temp_vec;
char * temp_ptr = temp_vec.empty() ? 0 : & temp_vec[0];
ryfdizuo 2007-11-21
  • 打赏
  • 举报
回复
楼上的大哥们强啊,偶又迟到了^_^_^_^
loops 2007-11-21
  • 打赏
  • 举报
回复
抱歉,上面略有错。

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{

vector<char> vChar;
vChar.push_back('a');
vChar.push_back('b');
....
char *str = new char[vChar.size()+1];
copy(vChar.begin(),vChar.end(), str);
str[vChar.size()]=0;
cout<<str<<endl;
delete []str;
return 0;
}
loops 2007-11-21
  • 打赏
  • 举报
回复

#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
vector<char> vChar;
vChar.push_back('a');
vChar.push_back('b');
......
char *str = new char[vChar.size+1];
copy(vChar.begin(),vChar.end(), str);
str[vChar.size()]=0;
cout<<str<<endl;
delete []str;
}

ckt 2007-11-21
  • 打赏
  • 举报
回复
可以

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

int main()
{
vector<char> vChar(5, 'g');

string str(vChar.begin(), vChar.end());
const char* pStr = str.c_str();

char arr[20] ={0};
strcpy(arr, str.c_str());
return 1;
}


wh_peng 2007-11-21
  • 打赏
  • 举报
回复
wh_peng 2007-11-21
  • 打赏
  • 举报
回复
woaimm123456 2007-11-21
  • 打赏
  • 举报
回复
暂时给不了,不到5天啊
woaimm123456 2007-11-21
  • 打赏
  • 举报
回复
强啊,不给分,不行了。

65,198

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧