C++ setprecision和字符串命名空间

C++ setprecision和字符串命名空间,c++,include,precision,stdstring,C++,Include,Precision,Stdstring,我怎么会这样 using std::string; 我得到一个错误,但在我包含字符串之后,它不会抛出错误。与std::setprecision相同 #include <string> using std::string; //Throws error when string library not included #include <iomanip> using std::setprecsion; //Throw error when iomanip library

我怎么会这样

using std::string;
我得到一个错误,但在我包含字符串之后,它不会抛出错误。与
std::setprecision
相同

#include <string>
using std::string; //Throws error when string library not included
#include <iomanip>
using std::setprecsion; //Throw error when iomanip library not included

int main()
{
    //stuff
}

这仅仅是因为您尝试使用的函数是在它们的库文件中定义的。在C,C++中,你必须写<强> >包含<库>,并使用它的函数。

因为<代码> STD::String 在包含声明它的头之前还没有被声明。因此,从库中导入字符串将它添加到STD命名空间中吗?是的,非常多。C++依赖于预处理器来共享声明。看起来你可能来自java后台。请注意,您根本不需要使用
语句。所做的只是将该类型导入到您的命名空间中。在我看来,最好是养成到处键入
std::string
的习惯,而不是
string
var obj = {
    one: 1
};

obj['two'] = 2;