【发布时间】:2021-12-13 12:47:24
【问题描述】:
我正在从用户那里获取 char 数组并试图找到它的大小,但它无法以某种方式工作。
我的代码如下所示:
int main()
{
char str[] ={}
cout << "Enter a characters ";
cin >> str;
int arrSize = sizeof(str);
cout << arrSize;
return 0;
}
当我像下面的代码一样定义数组时,它将起作用:
int main()
{
char str[] ={"1234"}
int arrSize = sizeof(str);
cout << arrSize;
return 0;
}
我不习惯 C++,请有人帮帮我。
【问题讨论】:
-
大小将由该行定义:
char str[] ={};,使用std::string会更简单。 -
对于字符串,总是使用
std::string。如果您想要其他数据的集合,那么如果大小在编译时已知并且永远不会更改,请使用std::array。否则使用std::vector。 -
sizeof不是函数。它是一个运算符,可为您提供在编译时 已知的对象大小。阅读此内容:en.cppreference.com/w/cpp/language/sizeof,或阅读您的学习材料中有关 sizeof 运算符的信息。 -
另外,
char str[] ={}无效。不仅因为缺少分号,还因为所有数组 必须 的大小至少为一个元素,并且您尝试将大小设为零。然后您还尝试将数据添加到数组中,但数组具有固定大小并且不是动态的。 -
您的第一个示例是未定义的行为,甚至不应该编译,因为不允许使用 0 大小的数组