如何在作用域中声明

How to declare in scope?

本文关键字:声明 作用域      更新时间:2023-10-16

我试图在多少数字是在一个文本文件中读取,因为总数没有定义。我要做的是,写一个while循环,读取文件,直到没有更多的元素可读。在while循环中,cin将读入元素并压入vector数据。但是"i"在作用域中没有定义。我如何在作用域中声明它,或者是否有更好的方法?

void read_vector(vector<int> &data) {
    cout << "Using read function!" << endl;
    //int i = data.size();
    while (data.size() != 0){
        cin >> data[i];
        data.push_back(data[i]);
    }
} // read_function()

提前感谢您的帮助!

如果您不知道输入中有多少数字,您可以使用while(cin>>temp)读取所有数字,直到达到EOF或无效令牌(不是整数)。所以你不需要变量i。只需创建一个临时的int读取输入,push_back将其放入vector

int temp;
while (cin>>temp){
    data.push_back(temp);
}

如果要声明并初始化一个名为i的变量,那么

int i = 0;

然而,data[i]不能工作,因为向量中还没有元素。您需要使用data.push_back()来添加元素。由于push_back()将元素添加到列表的末尾,因此根本不需要索引变量。所以声明是没有必要的。