这个代码怎么错了?

xiongjiqw 2010-03-12 12:43:18

int main()
{
vector<string> *p = new vector<string>(10);

p[1] = "aa";
cout<<p[1]<<endl;
}



error C2679: 二进制“<<”: 没有找到接受“std::vector<_Ty>”类型的右操作数的运算符(或没有可接受的转换)
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2010-03-12
  • 打赏
  • 举报
回复
如果是VC2003,完整的要这么写:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<string> *p = new vector<string>(10);

(*p)[1] ="aa";
cout<<(*p)[1].c_str()<<endl;
}
malu_1982 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
C/C++ code vector<string>*p=new vector<string>(10);

(*p)[1]="aa";
cout<<(*p)[1]<<endl;
[/Quote]
Mark xue xie............
cd2108006026 2010-03-12
  • 打赏
  • 举报
回复
p[1].c_str()
因为要转为const char *字符串输出
昵称很不好取 2010-03-12
  • 打赏
  • 举报
回复
    vector<string> *p = new vector<string>(10);

(*p)[1] = "aa";
cout<<(*p)[1]<<endl;
xiongjiqw 2010-03-12
  • 打赏
  • 举报
回复
另外 7 楼的似乎有点问题。
那个 [10] 应该是 10 个 vector<string> 类型的数组吧? (10) 符合我的要求啊
lxslove 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cd2108006026 的回复:]
加*

(*p)[1].c_str()
因为要转为const char *字符串输出
[/Quote]
string 类型不必转换,有重载<< 操作符。
lxslove 2010-03-12
  • 打赏
  • 举报
回复
int main()
{
vector<string> *p = new vector<string>(10);
//你这个10是初始化还是10个元素,如果是10个元素,要这样声明:
vector<string> *p = new vector<string>[10];

p[1] = "aa";
//从这儿看,上面应该是想声明10个元素,取第一个,然后赋值,但赋值不是这样做的,参考做法:
p[1].push_back("aa");

cout<<p[1]<<endl;
//vector容器没有重载<<操作符,你是想打印刚插入的字符吧?要这样做:
cout << p[1][0] << endl;
// 最后,别忘而来delete
delete [] p;
}
cd2108006026 2010-03-12
  • 打赏
  • 举报
回复
操作符重载的比较繁琐
赋值大概就是这个意思
p->operator[](1) = "abc";
cd2108006026 2010-03-12
  • 打赏
  • 举报
回复
加*

(*p)[1].c_str()
因为要转为const char *字符串输出

64,649

社区成员

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

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