【发布时间】: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