gpt4 book ai didi

c++ - 将 std::istringstream 作为参数传递无效

转载 作者:行者123 更新时间:2023-12-05 09:31:57 36 4
gpt4 key购买 nike

我刚开始学习 C++ 11,我有这个头文件:

#pragma once
#include <string>
#include <fstream>
#include <sstream>

class Parser
{
public:
Parser();
~Parser();

void Parse(const std::string& path);

private:

std::ifstream inFile;

void LoadFile(const std::string& path);

void Process(const std::istringstream& in);
};

还有这段代码:

void Parser::LoadFile(const std::string& path)
{
if (!Exists(path))
throw std::exception("File not found.");
else
{
inFile.open(path);

std::string line;
while (std::getline(inFile, line))
{
// Input stream.
std::istringstream iss(line);
Process(&iss);
}
}
}

void Parser::Process(const std::istringstream& in)
{
}

但我在 Process(&iss); 行出现以下错误:

there is no proper constructor to convert from "std::istringstream *"to "std::basic_istringstream <char, std::char_traits ,std::allocator >"

我必须如何声明 Process 方法?

最佳答案

Process(&iss);

iss 是一个 std::istringstream。在表达式中使用时,& 是寻址运算符。

&iss 表达式的结果是指向 std::istringstreamstd::istringstream * 的指针。

void Process(const std::istringstream& in);

这将此函数声明为将对 const std::istringstream &引用作为参数,而不是指针。

声明的上下文中,& 表示引用类型

& 在表达式或声明中使用时有不同的含义。事实上,& 在表达式中可能有完全不同的含义,具体取决于它出现的位置。

关于c++ - 将 std::istringstream 作为参数传递无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510870/

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