我正在尝试声明一个大小为10,000的数组。 最好是一个字符数组。然后,我可以输入任意大小n(<= 10,100)的输入。我想找到这个。
我的代码无法正常工作。
int main()
{
char arr[10000];
cin >> arr;
cin.sync();
int l=0;
for(int i=0; ; i++)
{
if(arr[i]=='\n')
break;
l++;
}
cout << l;
return 0;
输入:地狱 我希望输出为4,但实际输出为4482。
答案 0 :(得分:3)
您不能在标准C ++中做到这一点。但是您可以使用
std::vector<char> arr;
和arr.resize(/*ToDo - size here*/)
。 std::vector
的内存管理也优于具有自动存储持续时间的大型固定大小阵列。
也就是说,在您的情况下,std::string
可能是最佳选择:
std::string the_standard_library_is_fantastic;
std::cin >> the_standard_library_is_fantastic;
之后
std::cout << the_standard_library_is_fantastic;
您认为arr
在某种意义上以'\n'
结尾的假设是不正确的。
答案 1 :(得分:1)
cin >> arr;
将C样式的字符串放入arr
中,该字符串以'\0'
而不是'\n'
终止(即使您按Enter键将输入发送到您的程序)。要获得4
的预期输出,您需要更改
if (arr[i] == '\n')
对此:
if (arr[i] == '\0')
答案 2 :(得分:0)
通常使用标准C ++库。 #include <string>
可以轻松完成此任务。
string arr;
cin >> arr;
cin.sync();
int l = arr.length();
cout << l;
return 0;