这篇文章是关于C++中的字符串。我很久没有碰过C/C++了;事实上,我只在大学的第一年学习了这些语言,已经有7年了。
在C中,要存储字符串,我必须创建字符数组(无论是静态还是动态,都不重要)。因此,这意味着我需要提前猜测数组将包含的字符串的大小。在C++中,我采用了同样的方法。我知道有一个std::string类,但我从未使用过它。
我的问题是,由于我们从未声明std::string类中数组/字符串的大小,当写入时是否会发生缓冲区溢出。我的意思是,在C中,如果数组的大小为10,而我在控制台上输入了超过10个字符,则额外的数据将被写入到其他对象的内存位置中,该位置与数组相邻。在使用cin对象时,std::string是否会发生类似的情况。
在C++中,使用std::string时,我需要提前猜测字符串的大小吗?
感谢你们所有人。这个页面上没有一个正确的答案(提供了许多不同的解释),所以我不会选择任何一个作为唯一的答案。我对前5个回答感到满意。注意保持安全!
在C中,要存储字符串,我必须创建字符数组(无论是静态还是动态,都不重要)。因此,这意味着我需要提前猜测数组将包含的字符串的大小。在C++中,我采用了同样的方法。我知道有一个std::string类,但我从未使用过它。
我的问题是,由于我们从未声明std::string类中数组/字符串的大小,当写入时是否会发生缓冲区溢出。我的意思是,在C中,如果数组的大小为10,而我在控制台上输入了超过10个字符,则额外的数据将被写入到其他对象的内存位置中,该位置与数组相邻。在使用cin对象时,std::string是否会发生类似的情况。
在C++中,使用std::string时,我需要提前猜测字符串的大小吗?
感谢你们所有人。这个页面上没有一个正确的答案(提供了许多不同的解释),所以我不会选择任何一个作为唯一的答案。我对前5个回答感到满意。注意保持安全!