为什么使用默认构造函数构造std :: string对象时,其行为会有所不同?

普里西维·拉吉(Prithivi Raj)

我尝试了以下程序:

#include <iostream>
#include <string>

int main ()
{
  std::string str;
  str[0] = 'o';
  str[1] = 'k';
  std::cout << str.length();
  std::cout << "as a whole :";
  std::cout << str << std::endl;
  std::cout << "character by character :";
  std::cout << str[0] << str[1] << std::endl;      
  return 0;
}

我不明白为什么不能使用object变量将字符串整体打印出来,为什么返回长度,0因为很明显我已经使用下标运算符添加了字符,因为这将返回char引用,所以我知道这是合法的。

另外,我没有得到任何例外。就是这样。显然,std::string班上的幕后发生了很多事情,我知道我错过了一些东西。有人可以帮我吗?

火焰

您有一个字符串长度0,然后尝试使用下标运算符修改其内容。这是未定义的行为,因此在这一点上,无法保证任何特定的结果。如果at()改用它,它将暴露出错误并引发异常。

为什么长度返回为0

它始于0,您没有做任何添加(例如push_back+=)。但是话又说回来,由于您之前所做的是未定义的行为,因此此处可能会发生任何事情。

另外,我没有任何例外。

您可以std::string::at改为std::out_of_range尝试,尝试时会抛出异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在for循环中更新Python生成器时,其行为会有所不同?

来自分类Dev

为什么在for循环中更新Python生成器时,其行为会有所不同?

来自分类Dev

为什么在使用ICustomTypeDescriptor时TypeDescriptor.GetProperties对于类型和对象的行为会有所不同

来自分类Dev

为什么在Dom对象中为其分配变量会有所不同

来自分类Dev

为什么在Dom对象中为其分配变量会有所不同

来自分类Dev

当类中的counter较大时,为什么java线程的行为会有所不同?

来自分类Dev

为什么在递增计数与递减计数时,for循环的行为会有所不同?

来自分类Dev

为什么使用交叉元运算符时** 2和²的行为会有所不同?

来自分类Dev

为什么从函数调用Bash的“源”命令的行为会有所不同?

来自分类Dev

当计数器在我的班级较大时,为什么Java线程的行为会有所不同?

来自分类Dev

提供通用类型与直接类型时,为什么Typescript映射元组类型的行为会有所不同?

来自分类Dev

在直接分配或从get-content检索数组时,为什么数组的行为会有所不同

来自分类Dev

为什么以foreach调用时,ForEach-Object的行为会有所不同?

来自分类Dev

为什么对于相同但按比例缩放的数据,绘图的行为会有所不同?

来自分类Dev

如果我使用 glFrustum,为什么绘制的这个对象会有所不同?

来自分类Dev

使用-all标志时,为什么pdfimages生成的图像会有所不同?

来自分类Dev

使用-all标志时,为什么pdfimages生成的图像会有所不同?

来自分类Dev

为什么在使用两个不同的window.location.href分配时浏览器行为会有所不同?

来自分类Dev

为什么有时自己的敏捷状态会有所不同?

来自分类Dev

为什么分别编译和链接功能时性能会有所不同?

来自分类Dev

为什么在静态连接时Web套接字的延迟会有所不同?

来自分类Dev

为什么在静态连接时Web套接字的延迟会有所不同?

来自分类Dev

为什么当我使用完整路径而不是当前路径时,`rename`的行为会有所不同?

来自分类Dev

为什么将使用默认构造函数构造的对象的“ sizeof”取总为1?

来自分类Dev

如果使用优化(-O2,-O3),为什么此代码的行为会有所不同?

来自分类Dev

如果使用优化(-O2,-O3),为什么此代码的行为会有所不同?

来自分类Dev

为什么JavaScript“删除”运算符在不同浏览器中的行为会有所不同?

来自分类Dev

为什么将文件夹复制到同一磁盘上的其他位置时,其大小会有所不同?

来自分类Dev

用gnu90和c90标准编译时,为什么strerror_r的行为会有所不同?

Related 相关文章

  1. 1

    为什么在for循环中更新Python生成器时,其行为会有所不同?

  2. 2

    为什么在for循环中更新Python生成器时,其行为会有所不同?

  3. 3

    为什么在使用ICustomTypeDescriptor时TypeDescriptor.GetProperties对于类型和对象的行为会有所不同

  4. 4

    为什么在Dom对象中为其分配变量会有所不同

  5. 5

    为什么在Dom对象中为其分配变量会有所不同

  6. 6

    当类中的counter较大时,为什么java线程的行为会有所不同?

  7. 7

    为什么在递增计数与递减计数时,for循环的行为会有所不同?

  8. 8

    为什么使用交叉元运算符时** 2和²的行为会有所不同?

  9. 9

    为什么从函数调用Bash的“源”命令的行为会有所不同?

  10. 10

    当计数器在我的班级较大时,为什么Java线程的行为会有所不同?

  11. 11

    提供通用类型与直接类型时,为什么Typescript映射元组类型的行为会有所不同?

  12. 12

    在直接分配或从get-content检索数组时,为什么数组的行为会有所不同

  13. 13

    为什么以foreach调用时,ForEach-Object的行为会有所不同?

  14. 14

    为什么对于相同但按比例缩放的数据,绘图的行为会有所不同?

  15. 15

    如果我使用 glFrustum,为什么绘制的这个对象会有所不同?

  16. 16

    使用-all标志时,为什么pdfimages生成的图像会有所不同?

  17. 17

    使用-all标志时,为什么pdfimages生成的图像会有所不同?

  18. 18

    为什么在使用两个不同的window.location.href分配时浏览器行为会有所不同?

  19. 19

    为什么有时自己的敏捷状态会有所不同?

  20. 20

    为什么分别编译和链接功能时性能会有所不同?

  21. 21

    为什么在静态连接时Web套接字的延迟会有所不同?

  22. 22

    为什么在静态连接时Web套接字的延迟会有所不同?

  23. 23

    为什么当我使用完整路径而不是当前路径时,`rename`的行为会有所不同?

  24. 24

    为什么将使用默认构造函数构造的对象的“ sizeof”取总为1?

  25. 25

    如果使用优化(-O2,-O3),为什么此代码的行为会有所不同?

  26. 26

    如果使用优化(-O2,-O3),为什么此代码的行为会有所不同?

  27. 27

    为什么JavaScript“删除”运算符在不同浏览器中的行为会有所不同?

  28. 28

    为什么将文件夹复制到同一磁盘上的其他位置时,其大小会有所不同?

  29. 29

    用gnu90和c90标准编译时,为什么strerror_r的行为会有所不同?

热门标签

归档