为啥“cout”总是给我错误 C1083?

Posted

技术标签:

【中文标题】为啥“cout”总是给我错误 C1083?【英文标题】:Why does "cout" keep giving me error C1083?为什么“cout”总是给我错误 C1083? 【发布时间】:2014-11-28 09:39:26 【问题描述】:

我刚才用的是Visual C++ 6.0,一直报这个错误:

致命错误 C1083:无法打开包含文件:'streambuf':没有这样的文件或目录

我的代码只是一个简单的 hello world 程序。

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

int main(int argc, char* argv[])

    cout<<"Hello World.";
    return 1;

然后我去检查了我的 INCLUDE 文件夹,发现了一个名为 STREAMBF 的文件,但编译器正在寻找 STREAMBUF。请注意,存在的文件在 B 和 F 之间缺少 U。这是来自 VC++6.0 的良好副本,直接来自实际 CD,而不是盗版副本。所以应该有所有需要的文件。但似乎缺少一个文件!这个MS又是不是又傻了,又犯了一个大错误,忘记在他们的CD上包含一个重要文件?我不想认为从 MS 工厂出来的每张 VC++6.0 的 CD 都有这个问题。而且我知道这是一个丢失的文件,而不仅仅是一个错误命名的文件,因为将 STREAMBF 重命名为 STREAMBUF 只会导致更多错误。

有人知道我在哪里可以找到文件 STREAMBUF 的副本吗?或者我只是在这里忽略了一些东西?这个确切的错误是在现代操作系统(如 Windows 7)上运行 VC++ 旧副本的已知问题吗?是否有可能它正在寻找 STREAMBUF 的唯一原因是这是与 Win7 关联的较新文件,并且如果它在不同的环境(较旧的操作系统)中运行,它实际上会寻找正确的文件 STREAMBF ?有人可以帮我吗?

【问题讨论】:

有什么理由使用VC++6吗?这个编译器对 C++ 标准的“解释”是有问题的。但是,此错误看起来您的安装在某种程度上被破坏了。 streambufiostream 包含的标准标头。 ***.com/questions/4887788/compile-problem-c Visual C++ 6.0 编译器已经很老了,而且是在 C++ 标准化的同一年发布的,这可能意味着它的标准库可能不完全符合标准,包括头文件。尝试包括例如&lt;iostream.h&gt;(准标准名称),看看是否效果更好。 大约 15 年前,我不得不在一家公司使用那个编译器,它被认为已经过时了当时 抓住Visual Studio 2013 CE。创建新项目时,请确保它是“Win32 控制台应用程序”,您最终会得到一个 100% 本机程序,没有任何开销,并且不依赖于 CLR(即 .Net Framework)。使用完全过时的编译器将使您的学习体验更加困难,这仅仅是因为您将无法使用许多 sn-ps,并且可能确实会学习错误的概念或只是以错误的方式做事来规避问题。跨度> 【参考方案1】:

您的安装已损坏、已弃用或以错误的方式解释您的代码。 如果您尝试构建完全为此版本开发的项目,则应仅使用较旧的编译。

尝试用新的编译器编译相同的代码,如果你想使用 VS 那么你应该寻找 Visual Studio Express 2013。

您的代码没有任何错误。

【讨论】:

Visual Studio Community 2013 更好。 是的,我知道它已经过时了。我用它来自学 C++ 语言。此外,所有新版本的 VC++(如 VS2013 等)都是基于 .Net 的。因此,他们编译的任何东西都不能在没有 .Net 的计算机上运行。它们不是经典的 C++ 编译器。他们实际上是在使用 C++ 和 .Net 的组合,所以它并不是真正的纯 C++。 @BenHutchinson 这根本不是真的。即使使用 MSVC 2013,您仍然可以构建一个依赖于 .Net 的本机 C++ 可执行文件。如果您实际创建 CLR 项目,您只会获得 .Net 代码。您可能必须安装的唯一依赖项是 MSVC 运行时(但前提是您动态链接它)。【参考方案2】:

把你的程序修改成,你应该可以看到了吧。

#include <iostream.h>
using namespace std;

int main()

    cout<<"Hello World.";
    return 1;

然而, 你的编译器很老了。你需要升级。

有适用于 Windows 的 C++ 编译器,从 Microsoft Express Visual Studios Link and Info VS2013 到 其他一些非微软的,比如GCC for Windows。 如果您没有安装权限,有一些portable c++ compilers。 终于有一些在线编译器用于简单的测试。 web based online compilers。

【讨论】:

我知道它已经过时了。我将它用作 C++ 的简单实现来自学 C++ 语言。我通常使用 VB6 来编写程序,并且我正在尝试拓宽我的编程知识。我听说软件公司中所有真正的程序员都在使用 C++ 编写他们的东西(从视频游戏到数据库软件,再到处理科学数据的软件,基本上任何由专业人士编写的计算机软件都是用 C++ 编写)。 祝你好运。但我相信你需要使用更新版本的 C++,它会给你带来更多的教育好处。这些变化是巨大的,所以旧的编译器可能会让你的进度很麻烦。而且您肯定不会获得适当的社区支持,这些支持主要是针对较新版本的。【参考方案3】:

对于我的 VC 6.0 的 win 10 安装,我遇到了同样的问题...致命错误 C1083:无法打开包含文件:'streambuf':没有这样的文件或目录 替换为 并不能解决问题。 我检查了头文件安装文件夹(Program files\VS98\VC98\INCLUDE)。由于某些(未知)原因,某些文件名在安装过程中已更改。恢复原始名称已解决问题,在我的情况下,例如: 将 STREAMBF 转换为 STREAMBUF,STDXCEPT 转换为 STDEXCEPT,XCEPTION 转换为 EXCEPTION,FCTIONAL 转换为 FUNCTIONAL。 注意:其他头文件名可能有误。我在我的安装中列出了错误的文件名。 我希望这可能会有所帮助。

【讨论】:

以上是关于为啥“cout”总是给我错误 C1083?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DTrace 有时但并非总是给我无效地址错误?

为啥它给我一个返回丢失错误?

为啥重新声明 std::cout 会导致分段错误?

#include<iostream> 存在,但出现错误:标识符“cout”未定义。为啥?

VC++ 错误:错误 C1083:无法打开源文件:'=0x0401':没有这样的文件或目录

致命错误 C1083:无法打开包含文件:'io.h':没有这样的文件或目录