C++ c++;字符数组大小验证

C++ c++;字符数组大小验证,c++,validation,character-arrays,C++,Validation,Character Arrays,我有一个字符数组,可以容纳1000个元素(+1表示“\0”)。数组将由用户输入填充。我想知道是否有任何方法可以检查输入是否超出数组所能容纳的范围。如果我尝试添加它,程序将在我可以比较其大小之前崩溃。我在考虑扩展数组,看看输入是否少于1000个字符,但这个想法对我来说也不是很好 编辑: im使用std::cin.getline()从用户那里获取输入 而且不能使用Sting类我认为检查它的一种方法是在数组中找到\0的索引。如果位置等于或大于1000,则不应向其添加更多字符 如果使用的是cin.get

我有一个字符数组,可以容纳1000个元素(+1表示“\0”)。数组将由用户输入填充。我想知道是否有任何方法可以检查输入是否超出数组所能容纳的范围。如果我尝试添加它,程序将在我可以比较其大小之前崩溃。我在考虑扩展数组,看看输入是否少于1000个字符,但这个想法对我来说也不是很好

编辑:

im使用
std::cin.getline()
从用户那里获取输入
而且不能使用
Sting
类我认为检查它的一种方法是在数组中找到
\0
的索引。如果位置等于或大于
1000
,则不应向其添加更多字符

如果使用的是
cin.getline()
可以使用变量
n
指定所需的最大字符数

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
您可以在这里设置
n=1001
(它还计算终止字符
\0
)。

简短回答:是

使用
std::string

std::string line
while (std::getline(std::cin, line))
{
    // do something with line
}

如果您不允许使用
std::string
,那么您可以扮演自己的字符串类角色,或者查看
std::getline
的常见实现并模拟它们(只是不将其存储在
std::string
中)。

您如何填充数组?请给出您的示例,我使用的是
cin.getline()
,因此所有输入都立即存储在数组中。这不太重要,但它是为了一项作业,我的教授喜欢把他发现的任何错误都砍掉60%。@JosipDorvak你可以用
std::string
。好的,我不确定它是否算上了终止字符,我会试试看。谢谢你的建议。我知道用一根真正的绳子就行了。但是我们的教授不希望我们使用字符串。真不方便。我只是被过度保护了不,他可能会“尝试”溢出数组当然他会尝试溢出数组。这可能是这项任务的重点之一。