map.insert of * argv[]



我在<map>的插入函数中遇到了一些问题,无法理解哪些参数是正确的,也许你可以帮助我并解释为什么?

我想打开一个文件,同时保存用户在参数中给出的文件名。为了做到这一点,我认为用ifsteam和字符串对象制作地图是一个很好的选择。

这是代码:

int main(int argc, char** argv)
{
std::map<std::ifstream*, std::string> Dateien;
auto it_dateien = Dateien.begin();

for(size_t param = 1; param < argc; param++)
{
//No valid instance of the constructor
Dateien.insert(it_dateien,std::pair<std::ifstream*, std::string((*argv[],*argv[]));

提前感谢!

如果我正确理解你想要实现的目标,你需要这样的东西:

int main(int argc, char** argv)
{
std::map<std::string, std::ifstream> Dateien;
for (size_t param = 1; param < argc; param++)
{
Dateien[argv[param]] = std::ifstream{ argv[param] };
}
}

我假设您希望将要读取的文件的名称保存在映射中,并通过执行Datein.at(NameOfFile)来检索相应的ifstream。

例如,用法可以是这样的:

std::string line;
auto& firstFile = Dateien.at(argv[1]);
if (firstFile.is_open())
{
while (std::getline(firstFile, line))
{
std::cout << line << 'n';
}
firstFile.close();
}

最新更新