gpt4 book ai didi

c++ - C++ 字符串中会发生缓冲区溢出吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:10 26 4
gpt4 key购买 nike

这是关于 C++ 中的字符串。我已经很长时间没有接触 C/C++ 了;事实上,大约 7 年前,我在大学的第一年才用这些语言进行编程。

在 C 中,为了保存字符串,我必须创建字符数组(无论是静态的还是动态的,都无关紧要)。所以这意味着我需要提前很好地猜测数组将包含的字符串的大小。好吧,我在 C++ 中应用了相同的方法。我知道有一个 std::string 类,但我一直没有抽出时间使用它。

我的问题是,由于我们从未在 std::string 类中声明数组/字符串的大小,因此在写入时是否会发生缓冲区溢出。我的意思是,在 C 中,如果数组的大小是 10,而我在控制台上键入了超过 10 个字符,那么额外的数据将被写入与数组相邻的某个其他对象的内存位置。使用 cin 对象时,std::string 中会发生类似的事情吗?

在 C++ 中使用 std::string 时,是否必须事先猜测字符串的大小?

嗯!谢谢大家。此页面上没有一个正确答案(提供了很多不同的解释),因此我不会选择任何一个。我对前 5 个很满意。保重!

最佳答案

取决于您用来访问 string 对象的成员,是的。因此,例如,如果您使用 reference operator[](size_type pos) where pos > size(),是的,您会。

关于c++ - C++ 字符串中会发生缓冲区溢出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com