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

How do I declare an array of unknown size then take input till I desire and then get the size of the array?

本文关键字:数组 然后 何声明 输入 获取 我想要 一个 未知 声明      更新时间:2023-10-16

>我正在尝试声明一个大小为 10,000 的数组。最好是字符数组。然后我可以接受任何大小 n(<=10,100( 的输入。我想找到这个 n。

我有一个代码不起作用。

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。

在标准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'终止的假设是不正确的。

cin >> arr;将一个 C 样式的字符串放入 arr 中,该字符串以 '' 结尾,而不是以 'n' 结尾(即使您按 Enter 将输入发送到程序(。要获得 4 的预期输出,您需要更改此设置

if (arr[i] == 'n')

对此:

if (arr[i] == '')

正常使用标准C++库。 #include <string>可以轻松完成此任务。

string arr;
cin >> arr;
cin.sync();
int l = arr.length();
cout << l;
return 0;
相关文章: