关于string类的一些问题

loewe 2003-08-15 05:49:24
对于以下数据,为什么在加了注释的那行会有错误:
3 aaa bbb ccc

我的目的是吧aaa bbb ccc分别存放在三个结构体里
#include<iostream>
#include<sstream>
#include<string>
#include<malloc.h>

using namespace std ;

typedef struct node
{
string s ;
struct node *link ;
}NODE ;
NODE *q , *p ;

int main()
{
int n ;
cin >> n ;

for(int i = 0 ; i < n ; i++)
{
q = (NODE*)malloc(sizeof(NODE)) ;
cin >> q->s ; //*******为什么这里会出错的*******
}
return 0 ;
}
...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
robbie24 2003-08-15
  • 打赏
  • 举报
回复
string类的private中有个char *指针变量.
没有初始化就拿来用,你说编译器会让你过吗?
robbie24 2003-08-15
  • 打赏
  • 举报
回复
faint
loewe你看过C++没有?
new是运算符,malloc是函数,new在分配内存的同时会调用该类相关的构造函数,而malloc不行.
wangcx给你的建议,你多看看书吧,调试通过没有?
我看你要是嫌麻烦的话,直接改成内置数组好了.
这样这句" cin >> q->s "就可以pass了.
loewe 2003-08-15
  • 打赏
  • 举报
回复
malloc和new有什么区别啊
wangcx 2003-08-15
  • 打赏
  • 举报
回复
把出错的那行改为 q = new NODE; //(NODE*)malloc(sizeof(NODE)) ;
为什么会出错,是因为你用malloc不会调用string的构造函数,在string构造函数中要分配内存存储char *,malloc没有调用了string::string,就没有这个空间,而你输入的字符又存在哪里呢?
alienmaster 2003-08-15
  • 打赏
  • 举报
回复
GZ,这两种写法有区别吗?
jyfcsdn 2003-08-15
  • 打赏
  • 举报
回复
q = (NODE*)malloc(sizeof(NODE)) ;
改为q = new NODE;


64,676

社区成员

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

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