我如何声明一个未知大小的数组,然后输入直到我想要然后再获取该数组的大小?

时间:2019-06-03 09:01:51

标签: c++

我正在尝试声明一个大小为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。

3 个答案:

答案 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;