Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++&引用;std::字符串尚未声明";错误_C++_String - Fatal编程技术网

C++ C++&引用;std::字符串尚未声明";错误

C++ C++&引用;std::字符串尚未声明";错误,c++,string,C++,String,我一直在网站上寻找答案,但找不到任何对我有帮助的答案 我有一个代码,在我尝试(如建议的)添加这些行时使用字符串: using namespace std; using std::string; #include <string> 使用名称空间std; 使用std::string; #包括 我试着分别使用它们,并尝试将它们全部放在一起。最好的情况是所有的字符串错误都消失了,但我在“using std::string”行中遇到了另一个奇怪的错误,错误是:std::string尚未声明

我一直在网站上寻找答案,但找不到任何对我有帮助的答案

我有一个代码,在我尝试(如建议的)添加这些行时使用字符串:

using namespace std;
using std::string;
#include <string>
使用名称空间std;
使用std::string;
#包括
我试着分别使用它们,并尝试将它们全部放在一起。最好的情况是所有的字符串错误都消失了,但我在“using std::string”行中遇到了另一个奇怪的错误,错误是:std::string尚未声明。
有什么想法吗?谢谢大家。

使用

#include <string>
using namespace std;
//using std::string; <-- Needless
#包括
使用名称空间std;
//使用std::string 将
#包括在前面


避免在头文件中使用
语句,因为可能会将各种内容引入许多编译单元<代码>在头中使用std::string
可能是可以接受的,但是
使用命名空间std
肯定不是,因为它会在所有编译单元中造成太多命名空间污染。std名称空间在不断扩展(看看C++中的所有新功能),因此您不想在升级编译器时修复大量错误。

为什么否决?这是一个初学者的问题,但却是一个有效的问题。@Roee我认为它对任何人都没有用处,任何对语言的基本处理都会涵盖这一点。我可能现在应该链接到。你需要阅读一篇文章。他们在哪里推荐这些?有URL吗?为什么要鼓励某人使用namsepace std说
?@juanchopanza(a),因为这是一种有效的支持可能性。(b) 当我知道我在做什么的时候我就使用它,在过去的8年里它从来没有给我带来任何问题…每天都有一些SO帖子,其中有人有问题来自
使用名称空间std
@wannabeprogrammer你可以在需要时将字符串称为
std::string
,或者说
在有限的范围内使用std::string
,例如在函数或类中。如果我能看到其中一些事故是由蒙住眼睛驾驶的人造成的,我至少会确保我不建议学习者蒙住眼睛驾驶。我不认为
在标题中使用std::string
是可以接受的,除非它在有限的范围内。@RoeeGavirel我知道。但这个答案明确地提到了标题。@juanchopanza;我同意你的观点(这是我执行的标准之一)
是一个using指令<代码>使用std::string
是一个using声明。@juanchopanza:我在公共头中与vector和许多其他using声明一起使用它,这些声明被强制包含在所有项目中。效果最好。在异国情调的东西上使用std::是可以容忍的,但在其他方面则完全是噪音。是否允许将名称“string”用于其他目的?