Visual Studio 无法识别标准库

Posted

技术标签:

【中文标题】Visual Studio 无法识别标准库【英文标题】:Visual Studio doesn't recognize std library 【发布时间】:2020-08-25 07:22:21 【问题描述】:

我正在用 C++ 在 Visual Studio 2015 上编写 MFC 应用程序。我添加了一些使用 std 库成员的代码,并假设采用一个 int 并从中创建一个带有前缀“0x”的十六进制 char*。我试图从两台不同的计算机上在 VS 2015 和 VS 2017 上构建项目,但我得到了相同的错误 - VS 无法识别标准库。我已经在其他程序(Clion)上运行代码,它运行良好。

当我包含 #include <stdlib> 时,我收到以下错误: cannot open source file "stdlib"

我已经尝试重新安装 VS,并检查了我是否拥有支持 C++ 的所有必要扩展,但我想还是缺少一些东西。我该如何解决?

代码:

std::ostringstream ss;
int i = 7;

ss << std::hex << std::showbase << i;
std::string str = ss.str();
const char *output = str.c_str();

std::cout << output << std::endl;

并包含以下标题:

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <strstream>

我收到以下错误:

'Ostringstream': is not a member of 'std'
'Ostringstream': undeclared identifier
'ss': undeclared identifier
'hex': is not a member of 'std'
'showbase': is not a member of 'std'
'string': is not a member of 'std'
'string': undeclared identifier

谢谢。

【问题讨论】:

C++ 区分大小写 Ostringstream 应该是 ostringstream 你能得到“Hello world!”吗?工作吗? @george stdlib.h 是 c 头文件,cstdlib 用于 c++,stdlib 两者都不存在 如果 Visual Studio 有这样的问题,人们在 20 年前就已经意识到了。当项目的包含和库路径错误时,会发生此类错误。你是如何创建这个项目的?您是否尝试过创建 new 项目并对其进行编译?只需一个简单的控制台应用程序即可。 @AlanBirtles 在我的代码中,我使用了带有小写字母的ostringstream 【参考方案1】:

我以错误的顺序包含标题。在 Visual Studio 中的每个 C++ 项目中,它都会自动包含 "stdafx.h" 库。这个库包含了很多常用的库,如&lt;string&gt;等。解决的办法是用以下方式编写包含:

#include "stdafx.h"
// other headers of the form "header.h"

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <strstream>
// other headers of the form <header>

代替:

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <strstream>
// other headers of the form <header>

#include "stdafx.h"
// other headers of the form "header.h"

在question 中对此有更多的了解

感谢所有试图提供帮助的人,感谢您的时间和关注。

【讨论】:

很高兴您得到了您的解决方案,感谢您的分享,如果您将它们标记为答案,我将不胜感激,这将对其他社区有益。 @BarrnetChou 我会确保尽快将其标记为答案。不幸的是,出于某种原因(也许是因为我是新人),我只能在发布后 24 小时将其标记为答案。

以上是关于Visual Studio 无法识别标准库的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Visual Studio 2015 控制台运行程序无法识别 MSpec?

Visual Studio 代码无法识别 html 文件

Visual Studio 无法识别导入的 npm 包?

为啥 Visual Studio 无法识别 is_open() 函数

Visual Studio:无法识别代码中的引用?

是啥导致 MS Visual Studio 无法识别构建错误?