【问题标题】:Visual c++ can't open include file 'iostream'Visual c++ 无法打开包含文件'iostream'
【发布时间】:2012-07-27 16:03:22
【问题描述】:

我是 C++ 新手。我刚开始!我在 Visual c++ 2010 Express 版本上尝试了一个代码,但我收到了以下代码错误消息。

------ 构建开始:项目:abc,配置:调试 Win32 ------ ugo.cpp c:\users\castle\documents\visual studio 2010\projects\abc\abc\ugo.cpp(3):致命错误 C1083:无法打开包含文件:'iostream':没有这样的文件或目录 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

这是代码

// first.cpp -- displays a message


#include <iostream>   // a PREPROCESSOR directive

int main(void)        // function header
{             // start of a function body
  using namespace std;
  cout << "Come up and C++ me sometime.\n";  // message
  // start a new line
  cout << "Here is the total: 1000.00\n";
  cout << "Here we go!\n";
  return 0;
}

【问题讨论】:

  • 这一定是某种安装问题。
  • 仅供参考,您应该避免在代码中使用制表符。在像这样的问答网站上进行格式化时,它们很难处理。请改用空格。
  • 我假设您的包含路径包括 VC 包含目录(在程序文件下)。但是,在安装 VC 时,您是否选择了本机文件?
  • 嗨,大卫,这是我的包含路径中的内容:程序文件 (x86) > Microsoft Visual Studio 10.0 > VC > 包含 > srv.h
  • @大卫。安装VC时如何选择native文件?

标签: c++


【解决方案1】:

替换

#include <iostream.h>

using namespace std;

#include <iostream>

【讨论】:

  • 如果您不想使用 std 命名空间怎么办?
  • @sparkyShorts 因此,当我们通常使用 C/C++ 编写代码时,通常要遵循的标准是不要编写“使用命名空间 XXX”以避免在有人调试代码时造成混淆。相反,我们直接使用命名空间名称并调用其库函数。例如std::cout、std::cin、std::vector
  • 对于任何头文件使用 *.h 仅推荐用于标准 C++ 的外部库,因此如果您包含标准 C/C++ 库,请避免使用“.h”作为后缀.
  • 公开整个命名空间并在此之上包含标准标题听起来像是一团糟。我会检查其他答案。
【解决方案2】:

您应该检查的一些事项:

  • 检查您的 VS 版本中的包含文件夹(在“C:\Program Files\Microsoft Visual Studio xx.x\VC\include”中检查您包含的文件,iostream,确保它在那里)。 p>

  • <Project Name> > Properties > Configuration Properties > VC++ Directories > Include Directories 中检查您的项目包括目录 -(应该如下所示:$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;

  • 确保为此代码选择了正确的项目 (File &gt; New &gt; Project &gt; Visual C++ &gt; Win32 Console Application)

  • 确保你的代码文件中没有&lt;iostream.h&gt;,VS 不支持(在同一个项目中,检查你的其他代码文件,.cpp 和 .h 文件对于 &lt;iostream.h&gt; 并删除它)。

  • 确保你的 main() 函数不超过一个 项目代码文件(在同一个项目中,检查您的其他代码文件、.cpp 和 .h 文件中的 main() 函数并将其删除或替换为其他名称 )。

您可以尝试构建一些东西:

  • 从您的main() 函数中排除using namespace std; 并将其放入 在 include 指令之后。
  • 使用std::cout 而不使用using namespace std;

【讨论】:

  • @Secko:我在这些行中检查什么:检查您的 VS 版本中的包含文件夹。检查您的项目在 > 属性 > 配置属性 > VC++ 目录 > 包含目录中包含目录 确保您为此代码选择了正确的项目(控制台应用程序) 确保您在任何地方都没有 在您的代码文件中(VS 不支持)。确保项目代码文件中的 main() 函数不超过一个。我真的很新
【解决方案3】:

我在VS 2015 中遇到了同样的问题。从 VS 2010 开始,它看起来就像是 VS 2010,之后您需要在所有项目中包含 #include "stdafx.h"

#include "stdafx.h"
#include <iostream>
using namespace std;

以上对我有用。以下没有:

#include <iostream>
using namespace std;

这也失败了:

#include <iostream>
using namespace std;
#include "stdafx.h"

【讨论】:

  • (对于任何通过的人)如果您遇到这种情况,请禁用预编译头文件。
【解决方案4】:

您很可能在 Properties->VC++ Directories->Include Directories 中缺少 $(IncludePath)。添加它应该使 iostream 和其他人再次可见。您可能在设置程序时不小心删除了它。

【讨论】:

    【解决方案5】:

    您的编译器和围绕它安装的资源可能不完整。我建议重新安装你的编译器:之后它应该可以工作了。

    【讨论】:

    • 我已经尝试了很多次。同样的结果。我正在考虑使用不同的编译器。请问你能推荐任何人吗?
    【解决方案6】:

    我在 Visual Studio 2015 中创建“空”控制台应用程序时遇到此错误。我重新创建了该应用程序,未选中“空”框,它添加了所有必要的库。

    【讨论】:

      【解决方案7】:

      如果你的包含目录在VC++项目属性表->配置属性->VC++目录->包含目录中引用正确。路径在宏$(VC_IncludePath)中引用 在我的 VS 2015 中,这评估为: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"

      using namespace std;
      #include <iostream> 
      

      这对我有用。

      【讨论】:

        【解决方案8】:

        Microsoft Visual Studio 很有趣,当您使用安装程序时,您必须勾选很多选项以绕过 .netframework(有点)以制作更多 c++ 而不是 c 尖锐应用程序,例如 dekstop 开发下的 clr 选项...在 Visual Studio 安装程序中......区别在于 c++ win32 控制台项目或 c++ CLR 控制台项目。 那么有什么区别呢?好吧,我不会列出 CLR 包含的所有文件,但由于大多数优秀的 c++ 内核都在 linux 中......所以 CLR 允许你绕过很多 windows .netframework b/c Visual Studio 真的是为你准备的用 C 语言制作应用程序。

        这是一个 C++ win32 控制台项目!

        #include "stdafx.h"
        #include <iostream>
        using namespace std;
        int main( )
        {
        cout<<"Hello World"<<endl;
        return 0;
        }
        

        现在这是一个 c++ CLR 控制台项目!

        #include "stdafx.h"
        
        using namespace System;
        
        int main(array<System::String ^> ^args)
        {
        Console::WriteLine("Hello World");
        return 0;
        }
        

        这两个程序做同样的事情.... CLR 只是看起来更框架化的类重载方法,因此微软可以很好地拥有自己的庞大库,如果愿意,您应该熟悉自己。 https://msdn.microsoft.com/en-us/library/2e6a4at9.aspx

        您将从调试中学到的其他内容以添加以避免错误

        #ifdef _MRC_VER
        #define _CRT_SECURE_NO_WARNINGS
        #endif
        

        【讨论】:

          【解决方案9】:

          确保您已使用 C++ 进行桌面开发安装d。我遇到了同样的问题,因为我只安装了通用 Windows 平台开发。

          【讨论】:

            【解决方案10】:

            小程序的快速修复:

            添加:#include &lt;cstdlib&gt;

            【讨论】:

              【解决方案11】:

              就我而言,我的VS2015 安装时没有选择C++ package,而VS2017 安装时使用C++ package。如果我使用VS2015打开C++项目会显示这个错误,使用VS2017不会出错。

              【讨论】:

                【解决方案12】:

                如果您创建了一个名为 IncludePath 的环境变量,请尝试将其重命名为其他名称。

                此名称将覆盖项目属性中的 $(IncludePath)

                【讨论】:

                  【解决方案13】:

                  我也遇到了这个问题,我在 vs 2022 中使用了这段代码(在 main(); 之前),结果没问题:

                  #include "pch.h"
                  #include <iostream>
                  using namespace std;
                  using namespace winrt;
                  using namespace Windows::Foundation;
                  

                  【讨论】:

                    【解决方案14】:
                        // first.cpp -- displays a message
                    
                    
                    #include <iostream>   // a PREPROCESSOR directive
                    using namesapce std;
                    int main()        // function header
                    {             // start of a function body
                      ///using namespace std;
                      cout << "Come up and C++ me sometime.\n";  // message
                      // start a new line
                      cout << "Here is the total: 1000.00\n";
                      cout << "Here we go!\n";
                      return 0;
                    }
                    

                    【讨论】:

                      猜你喜欢
                      • 2017-01-28
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-06-23
                      • 2016-07-02
                      • 2016-11-29
                      • 1970-01-01
                      • 2013-10-25
                      • 2013-04-30
                      相关资源
                      最近更新 更多