我正在学习缓冲区溢出,想知道防止用户输入超过允许的字符并导致缓冲区溢出的最佳方法是什么
防止缓冲区溢出的最佳实践是什么?
下面是我的代码:#include <iomanip>
#include <iostream>
int main()
{
std::cout << "Buffer Overflow Example" << std::endl;
// The user can type more than 20 characters and overflow the buffer, resulting in account_number being replaced -
// even though it is a constant and the compiler buffer overflow checks are on.
// I need to modify this method to prevent buffer overflow without changing the account_order
// varaible, and its position in the declaration. It must always be directly before the variable used for input.
const std::string account_number = "CharlieBrown42";
char user_input[20];
std::cout << "Enter a value: ";
std::cin >> user_input;
std::cout << "You entered: " << user_input << std::endl;
std::cout << "Account Number = " << account_number << std::endl;
}
防止输入缓冲区溢出的最好方法是使用不使用固定长度缓冲区的方法。Std::cin.getline()是一个很好的例子,它可以安全使用。
定义固定长度的数组不是c++做任何事情的方式。如果你正在创建一个数组,你真的需要考虑你是否使用了最好的方法。