c++ - g++ ifstream 的类型不完整,存在正确的头文件

标签 c++ file-io

早上好

我正在尝试使用用 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/

相关文章:

C++成员数组未初始化

c++ - 为什么可以通过使用指向对象成员的指针的 const 成员函数来修改对象状态?

c++ - 如何在 C++ 中将文件读入 vector ?

java - 什么时候应该优先选择 Callable 而不是 Runnable?为什么?

.net - File.AppendAllText 可以用于非常大的文件而不会导致内存问题吗?

java - JFileChooser 远程 View

c++ - 调用 SetupDiGetDeviceInterfaceDetail 时程序崩溃

c++ - 我可以在输入 BSTR VARIANT 上调用 VariantChangeType 吗?

c++ - Boost Socket 在 close() 上崩溃

c - 如何从 C 语言文件中将每一行读入整数数组?