关于string的一个问题

hcon 2008-04-09 12:24:26
[/string s;
cout<<s[0]<<endl;

这个可以实现什么功能啊? 合法吗?不合法解释下 谢谢
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_lau 2008-04-10
  • 打赏
  • 举报
回复
xx
XiaoG602 2008-04-10
  • 打赏
  • 举报
回复
输出第一个字符~是空
return0x0 2008-04-10
  • 打赏
  • 举报
回复
string s;
cout<<s[0]<<endl;

这个段代码不合法,因为s是一个空字符串,其长度为0,因此s[0]是无效的。

在一些编译器中,该代码并不出现编译错误。

《C++ Primer 习题与解答》(习题3.9)
hastings 2008-04-09
  • 打赏
  • 举报
回复
s[1]就越界了
hcon 2008-04-09
  • 打赏
  • 举报
回复
我试过 呵呵string s是定义的一个空串,所以就没有输出?
s[1]也一样吗?
c_spark 2008-04-09
  • 打赏
  • 举报
回复
对[]操作符重载相当于对string s使用[i]即(s[i])时调用一个函数来return s.at(i);
c_spark 2008-04-09
  • 打赏
  • 举报
回复
可以,输出的是string类型字符串s的第一个字符
ryfdizuo 2008-04-09
  • 打赏
  • 举报
回复
输出string字符串的第一个元素,string里面重载了[]操作符,
自己试试不就知道了吗,而且印象会更深,
heatel 2008-04-09
  • 打赏
  • 举报
回复
可以通过,这样也合法,但是不推荐,
这样使用相当与C的字符数组
jieao111 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hcon 的回复:]
C/C++ codeinclude<iostream>
#include<string>
#include<vector>
using namespace std;
main()
{
string s;
cout<<1<<s<<1<<endl;
cout<<1<<s[0]<<1<<endl;
cout<<1<<s[1]<<1<<endl;
return 0;
}

#
结果是
11
1 1
1 1
我的怎么可以过啊?
[/Quote]


第三个是绝对不行的,,vs2008 试过,
norbe 2008-04-09
  • 打赏
  • 举报
回复
string 内部有一个char *m_data
构造对象的时候其实做了如下操作(默认构造函数)
m_data = new char[1];
*m_data = ‘\0’;

所以[0]是没有问题的,[1]就越界了。

至于楼上为什么[1]可以,我只能说ls人品太好了。。。
hcon 2008-04-09
  • 打赏
  • 举报
回复
include<iostream>
#include<string>
#include<vector>
using namespace std;
main()
{
string s;
cout<<1<<s<<1<<endl;
cout<<1<<s[0]<<1<<endl;
cout<<1<<s[1]<<1<<endl;
return 0;
}
#
结果是
11
1 1
1 1
我的怎么可以过啊?
return0x0 2008-04-09
  • 打赏
  • 举报
回复
刚才试验了一下

string s;

cout<<"1"<<s<<"1"<<endl; 输出“11” (1和1中间没有任何东西)s是空串 可以理解。

cout<<"1"<<s[0]<<"1"<<endl; 输出“1_1” (没有下划线,是像空格一样的不知道什么东西) 空串的第一个字符是什么? 不能理解。

cout<<"1"<<s[1]<<"1"<<endl; 返回 “string subscript out of range”下标越界。 有点明白,可是结合s[0],就不明白了。

64,648

社区成员

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

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