C++ string数组使用问题

Binary2Hex 2013-03-28 11:08:37
定义string数组
string example[3];

example[0][0] = 'a';
printf("example[0][0] = %c\n", example[0][0]);
printf("example[1][0] = %c\n", example[1][0]);
printf("example[2][0] = %c\n", example[2][0]);

结果输出:
example[0][0] = a
example[1][0] = a
example[2][0] = a

为什么只是对example[0][0]赋值,但会对另外两行产生影响呢?


另外如果初始化example[0]则结果正常
string example[3];

example[0] = "xyz";
example[0][0] = 'a';
printf("example[0][0] = %c\n", example[0][0]);
printf("example[1][0] = %c\n", example[1][0]);
printf("example[2][0] = %c\n", example[2][0]);

输出结果
example[0][0] = a
example[1][0] =
example[2][0] =
...全文
1232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2013-03-28
  • 打赏
  • 举报
回复
引用 7 楼 nowsuhan 的回复:
[quote=引用 4 楼 starytx 的回复:] string本身不是一个单纯的数组,所以你那样角标访问是不正确的。vs2010下运行异常终止
自己想了一下,用 + 运算符重载应该比较靠谱。[/quote]看看下边这个例子
    string s ;
    s.insert(0,1,'a');
    s.insert(1,1,'b');

    s += "c";
    printf("%s\n",s.c_str());
CppDisciple2 2013-03-28
  • 打赏
  • 举报
回复
引用 5 楼 nowsuhan 的回复:
[quote=引用 4 楼 starytx 的回复:] string本身不是一个单纯的数组,所以你那样角标访问是不正确的。vs2010下运行异常终止
那如果我想一位一位的对string进行赋值应该怎么操作?[/quote] string example[3]; example[0].resize( 1 ); example[0][0] = 'a'; printf("example[0][0] = %c\n", example[0][0]);
Binary2Hex 2013-03-28
  • 打赏
  • 举报
回复
引用 4 楼 starytx 的回复:
string本身不是一个单纯的数组,所以你那样角标访问是不正确的。vs2010下运行异常终止
自己想了一下,用 + 运算符重载应该比较靠谱。
CppDisciple2 2013-03-28
  • 打赏
  • 举报
回复
example[0]用default constructor构造完毕后,长度是0,example[0][0] = 'a'这个语句造成内存访问越界了,之后就是非法操作云云……
Binary2Hex 2013-03-28
  • 打赏
  • 举报
回复
引用 4 楼 starytx 的回复:
string本身不是一个单纯的数组,所以你那样角标访问是不正确的。vs2010下运行异常终止
那如果我想一位一位的对string进行赋值应该怎么操作?
starytx 2013-03-28
  • 打赏
  • 举报
回复
string本身不是一个单纯的数组,所以你那样角标访问是不正确的。vs2010下运行异常终止
Binary2Hex 2013-03-28
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:

string example[3];
example[0][0] = 'a'; //out of range
是因为只是声明了一个数组而没有分配空间的意思吗?
Binary2Hex 2013-03-28
  • 打赏
  • 举报
回复
是因为只是声明了一个数组而没有分配空间的意思吗?
mujiok2003 2013-03-28
  • 打赏
  • 举报
回复

string example[3];
example[0][0] = 'a'; //out of range

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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