这算不算是一个bug

booirror 2015-12-05 09:15:38

int main()
{
vector<char> result = vector<char>(3);
string s = string(result.begin(), result.end());
cout << "[" << s << "]" << endl;
cout << s.length() << endl;
return 0;
}

在vs,g++的结果都是一样,s的length是3,但全是‘\0',即空字符串。

按理说,以\0结束的字符串,如果内容是\0的话,字符串长度应该0才对,不应该是3

你说呢
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2015-12-06
  • 打赏
  • 举报
回复
为了兼容 C字符串 ,string 字符串,一般也是'\0'结束的 但是并不是遇到‘\0’就一定结束的。 '\0'后还可以有数据。
jiqiang01234 2015-12-06
  • 打赏
  • 举报
回复
std::string可以理解为与std::vector<>的存储特性一样,只不过多了一些字符串操作的函数而已
kkkkkina 2015-12-06
  • 打赏
  • 举报
回复
我觉得不算是吧
paschen 版主 2015-12-06
  • 打赏
  • 举报
回复
他不管你字符是什么,返回的是存储的字符个数 http://www.cplusplus.com/reference/string/string/length/
fefe82 2015-12-05
  • 打赏
  • 举报
回复
std::string 不是以零结束的字符串。

64,683

社区成员

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

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