这与C++中的字符串有关。我已经很长时间没有接触过C/C++了。实际上,大约七年前,我上大学的第一年才用这些语言进行编程。
在C中保存字符串,我不得不创建字符数组(无论是静态还是动态,都不必担心)。因此,这意味着我需要提前很好地猜测数组将包含的字符串的大小。好吧,我在C++中应用了相同的方法。我知道这里有一个std::string类,但是我从来没有使用它。
我的问题是,由于我们从不在std::string类中声明数组/字符串的大小,因此写入缓冲区时是否会发生缓冲区溢出。我的意思是,在C语言中,如果数组的大小为10,并且在控制台上键入了10个以上的字符,那么多余的数据将被写入与数组相邻的其他对象的存储位置。使用cin对象时,std::string会发生类似的情况吗?
使用std::string时,我是否必须在C++中先猜一下字符串的大小?
出色地!谢谢大家此页面上没有一个正确的答案(提供了许多不同的解释),因此我不会选择任何一个这样的答案。我对前5个感到满意。保重!
最佳答案
是,取决于您用来访问string
对象的成员。因此,例如,如果您使用reference operator[](size_type pos)
,而pos > size()
,则可以。
关于c++ - C++字符串中是否会发生缓冲区溢出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10398144/