c ++ char数组大小验证

时间:2013-10-07 19:51:34

标签: c++ validation character-arrays

我有一个可以容纳1000个元素的字符数组('\ 0'为+1)。该数组将由用户输入填充。我想知道是否有任何方法可以检查输入是否超过阵列可以容纳的数量。如果我尝试添加它,程序将崩溃,然后我可以比较它的大小。我正在考虑扩展数组并查看输入是否少于1000个字符,但这个想法似乎也不是一个非常好的我。

编辑:

使用std::cin.getline()来获取用户的输入 并且不能使用Sting

2 个答案:

答案 0 :(得分:1)

我认为检查它的一种方法是在数组中找到\0的索引。如果该位置等于或大于1000,则不应向其添加更多字符。

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

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

您可以在此处设置n=1001(它还会计算终止字符\0)。

答案 1 :(得分:1)

简答:是的。

使用std::string

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

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