【问题标题】:ifstream no conversion from char to char exists errorifstream 没有从 char 到 char 的转换存在错误
【发布时间】:2015-07-22 20:03:43
【问题描述】:
    int main()
    {
        char buffer[1024];
        ifstream dataFile ("./data.dat");
        while(buffer)
        {
            localHouse->location = dataFile.getline(buffer, 1024);
        }
}

这会引发错误:No suitable converion function from "std::basic_istream<char, std::char_traits<char>>" to "char" exists.

如果我改用指向缓冲区的指针,它会继续抛出此错误。据我所知,我完全按照示例here 中的方式使用它。

stackoverflow 上还有一个例子here

这显示了类似的用法,但我无法让它工作,而且它真的让我因为一个似乎说它无法从 char 转换为 char 的错误而撕毁我的头发。 >.

【问题讨论】:

  • 好吧,getline() 返回什么?也就是说,请改用免费(未绑定,非成员)getline() 函数并使用std::string 而不是固定大小的缓冲区。那么,下次请减少你的代码,House 的定义丢失了,但可能无关紧要。另外,除非必须,否则不要使用new。不要尝试像在 Java 或 C# 中那样使用它!
  • 它返回一个 c 字符串,如 char x[10]。我正在将此作为数据结构类的较大程序的一小部分,由于某些原因,我们不允许在其中使用字符串。这也是 c++ 而不是 Java 或 C#,我有理由使用 new。
  • 不,[getline()] 不会返回“a c-string, like char x[10]”。此外,在您显示使用new 的代码中没有明显的共振。您在此处显示的内容之外的其他代码无关紧要,因为您在此处发布的代码应该是一个最小的示例。甚至根本不需要实例化House,只需在House 中创建一个location 的实例就足够了。
  • 或者更确切地说,它返回一个c字符串,这里的功能相同。

标签: c++ char ifstream getline c-strings


【解决方案1】:

getline 的返回值是 istream 对象,我猜它不是您想要分配给 localHouse->location 的东西。 getline 将文件的一行读入您作为第一个参数提供的缓冲区变量中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2011-08-23
    • 2021-01-30
    相关资源
    最近更新 更多