strcpy 复制问题???

木黑神 2014-08-20 01:36:37

# include <iostream>
# include <string>

using namespace std;
struct ren
{
char name[20];
int qian;
};

ren * p = new ren[10];
int a =0;

int main()
{
string kahao;
cin >> kahao;

strcpy(p[a].name, kahao); // error ??

return 0;
}




为什么这样会错误呢????
我现在不想改 kahao 类型,如何可以复制?求指点。。。
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2014-08-20
  • 打赏
  • 举报
回复
看看strcpy的参数类型就知道了,c_str()是 string类库中的一个方法,返回一个string保存到字符串的const char*类型
jwj070524 2014-08-20
  • 打赏
  • 举报
回复
你可以上网查一下string类的成员函数c_str,返回C语言类型的指针(const char*) strcpy不会检查被拷贝的内存是否越界等问题,所以既然你用了string,要么统统使用string,要么你的结构体中类似char name[20]这样的代码就不要出现了,除非你能控制name拷贝时一定不会越界,否则换成char *name。拷贝的话就这样: p[a].name = new char[kahao.length()+1]; strcpy(p[a].name, kahao.c_str()); 记得释放内存。
FightForProgrammer 2014-08-20
  • 打赏
  • 举报
回复
你可以去看看string类型的和char*。strcpy这个函数入参你没有传对
木黑神 2014-08-20
  • 打赏
  • 举报
回复
引用 1 楼 jwj070524 的回复:

strcpy(p[a].name, kahao.c_str());
但是这样做有风险。
能给我解释下 .c_str() 什么意思吗?又和风险?
jwj070524 2014-08-20
  • 打赏
  • 举报
回复

strcpy(p[a].name, kahao.c_str());
但是这样做有风险。

64,685

社区成员

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

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