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"
库。这个库包含了很多常用的库,如<string>
等。解决的办法是用以下方式编写包含:
#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?