gpt4 book ai didi

c++ - 读取文件然后创建数组函数 C++

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:00 25 4
gpt4 key购买 nike

我是 C++ 的新手,最近我在读取文件时遇到了问题。该问题现已解决。我现在想做的是使用我读取的文件来创建一个数组,但是所有这些都必须在一个函数中完成,这意味着该函数必须返回一个数组,以便我可以在 main 上使用它。我遵循的流程:

  1. 读取文件
  2. 创建数组
  3. 返回数组地址。
  4. 主要内容:使用函数将数组放入变量中。到目前为止我的代码:

    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <string>
    using namespace std;
    void imprimeArreglo (int[],int);
    int* leeArreglo(string&);

    int i;
    void imprimeArreglo(int a[])
    {
    cout << a[i] << endl;
    }
    int* leeArreglo(string nombre)
    {
    ifstream arch(nombre.c_str());
    string tamStr;
    int tam;

    if(arch.is_open())
    {
    getline(arch,tamStr);
    tam=atoi(tamStr.c_str());
    int arr[tam];
    for(int i=0;i<tam;i++)
    {
    arch >> arr[i];
    }
    int *ret=arr;
    return ret;
    }
    return 0;
    }
    int main()
    {
    string nombre = "arr.txt";
    int *a= leeArreglo(nombre.c_str());
    imprimeArreglo(a);
    return 0;
    }

    我的 arr.txt 文件是什么样的:

    10
    9 8 22 33 76 0 23 100 -8 45

我认为这应该打印(使用 imprimeArreglo(a)):9 8 22 33 76 0 23 100 -8 45但我在控制台中得到的唯一信息是:2292592 我认为这是内存地址???我究竟做错了什么?有没有更好的使用 vector 的方法?
提前致谢!

最佳答案

这是一种简单的方法:

#include <iterator>
#include <vector>
#include <fstream>

std::vector<int> fileContents(const std::string& filename)
{
ifstream inputFile(filename.c_ctr());
std::istream_iterator<int> end;
std::istream_iterator<int> it(inputFile);
return std::vector<int>(it, end);
}

这会将所有数字读入一个 vector 中。您可能必须修改它以忽略第一个 10,例如通过调用 std::advance(it, 1); 就在初始化 it 之后>.

关于c++ - 读取文件然后创建数组函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com