早上好
我正在尝试使用用 g++ (g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3) 编译的 C++ 读取文件。 Tis 在 MSVC 2008 下编译运行
这里是我的代码:
#include <iostream>
#include <fstream>
int main(int argc, char* argv[])
{
const char filename[] ("~/Serial.Number")
std::ifstream afile ( fileName );
if ( afile.is_open() )
{
// read input
afile.close();
}
}
我读过的所有内容都表明这足以使输入文件正常工作。当我写它(重复尝试)时,Eclipse 光标悬停在“编译器”上说“afile”是一个 ifstream。然而在我编译它之后再次将鼠标悬停在“afile”上我得到“不完整的类型...”。
奇怪的是,当我运行程序( Debug模式)时它运行,没有错误,没有抛出异常,但文件从未打开并且 .is_open() 为 false。
有什么想法吗?
韦斯
最佳答案
您的 Linux 系统上很可能没有名为 ~\Serial.Number
的文件。它并不意味着您可能想要的(您的主目录下名为 Serial.Number
的文件)。
Linux 上的文件路径 ~\Serial.Number
传递给 open
系统调用或 C++ 文件流时,意味着文件名以波浪号 ~
后跟一个反斜杠 \
这不太可能(即使原则上可能)存在。
您可能想使用 getenv("HOME")
检索主目录并将其连接到 "/Serial.Number"
字符串(以普通斜杠开头不是反斜杠)。
问候。
关于c++ - g++ ifstream 的类型不完整,存在正确的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889477/