如何限制用户在 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 字符串进行风暴。当到达换行符、设置的字符定界符或直到提取了指定的字符数时,它将停止提取字符。
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 字符串进行风暴。当到达换行符、设置的字符定界符或直到提取了指定的字符数时,它将停止提取字符。