c++ 为什么我收到C2440错误字符串时,试图打开文件使用< netcdf>库?

ogsagwnx  于 2023-01-03  发布在  Etcd
关注(0)|答案(1)|浏览(170)

我尝试用C++库读取netCDF文件。但是,我收到一个C2440错误,告诉我无法将dataFile的类型转换为dataVar。或者,至少这是我认为它告诉我的,因为编译器错误似乎有点晦涩难懂。
下面是我的代码:

//create a test object to open netcdf file 
    const std::vector<std::string> path = obj.getPaths(); //returns all paths in the netcdf directory
    const std::string test = path[0]; //gives me a test path that is element 1 in the path vector

    netCDF::NcFile dataFile(test, netCDF::NcFile::read);
    netCDF::NcVar dataVar = dataFile.getVars();

错误:

Error C2440 'initializing': cannot convert from 'std::multimap<std::string,netCDF::NcVar,std::less<Aws::String>,std::allocator<std::pair<conststd::string,netCDF::NcVar>>>' to 'netCDF::NcVar' count-lightning C:\Users\Corey4005\Desktop\Dev\projects\count-lightning\src\main.cpp 59

我该怎么做才能让这段代码正常工作?
谢谢你的帮助!
我尝试过的:
我尝试使用NcFile流打开一个netcdf文件。NcFile流使用以下参数:

netCDF::NcFile dataFile(const std::string &filePath, netCDF::NcFile::fileMode fMode);

当我向filePath参数提供字符串文字时,收到了C2440 "initialing"错误。我感到困惑,因为我认为向常量字符串参数传递常量字符串文字是正确的。

6tqwzwtp

6tqwzwtp1#

netCDF::NcVar dataVar是单个变量,dataFile.getVars()返回Map中的多个变量。最简单的修复方法是使用:

auto dataVar = dataFile.getVars();

或者:

std::multimap< std::string, NcVar > dataVar = dataFile.getVars();

如果你真的想得到一个变量,你需要提供一个变量名:

netCDF::NcVar dataVar = dataFile.getVar("myvar");

参见http://unidata.github.io/netcdf-cxx4/classnetCDF_1_1NcFile.html

相关问题