如何限制用户在 C++ 中将 8 个字符输入字符串(动态字符数组)?

how can I limit a user to input 8 characters into string(dynamic char array)in c++?

int size;
cout<<"enter string size"<<endl;
cin>>size;
char * string1 = new char[size];

你好,我正在做一个项目,我的一个函数目的是获取一个动态字符数组作为 arg,它将字符串中单词的第一个字母发送到输出。 所以用户决定字符串长度(对于初始化的动态数组), 但是我怎么能确保他不会超过他选择的数组的长度?(编译器不会将其视为错误)。 我可以强制 'cin' 运算符限制自己吗?

您可以使用 std::string 实现此方法。例如:

const int maxchar = 8;
string str;
cin >> str;

if (str.size() > maxchar )
{
   err << "The input is too long." << endl;
   return 1;
}

只需将它们输入 std::string。不要为手动内存管理而烦恼。

std::cout << "Enter your name.\n> ";
std::string name;
std::cin >> name;

然后,如果你只需要传递前8个字符什么的,使用name.substr(...)

使用 std::string 更好,但是...

char input [8];
cin.getline (input, 8);

注意,此后输入缓冲区中可能仍有数据需要您处理。

编辑

给出问题中的原始代码:

cin.getline(string1, size);

你确实应该std::string,但如果你真的想使用字符数组,你应该使用:

 cin.getline(string1, 8);

这从用户输入中获取 8 个字符。

cin getline 的工作原理如下:

它提取字符,没有任何格式并将它们作为 c 字符串进行风暴。当到达换行符、设置的字符定界符或直到提取了指定的字符数时,它将停止提取字符。