2007年6月26日星期二

VC中使用STL

想在程序中调用STL函数,可是出现如下问题:
#include //这个没报错,路径应该没问题
...
vector i;//报错:error C2065: 'vector' : undeclared identifier
...
奇哉怪哉?
上网一查发现这是使用C++ Standard Library的基础问题。当使用标准库时,include后面不用加.h,但是需要使用命名空间。命名空间的指定有两种方式:
#include
using namespace std; // 在这里声明
...
vector i;
...
或者
#include
...
std::vector i; // 在这里显式声明
...
以前调用标准库里的函数的时候虽说也知道标准做法是使用命名空间,可不用VC也会使用默认的,所以就没在意。没想到在STL这就出了问题。

另:有时候用ifstream或ofstream打开带有中文路径的文件会失败问题。
解决办法:
1、使用C语言的函数设置为中文运行环境
setlocale(LC_ALL,"Chinese-simplified");//也有说写成setlocale(LC_ALL,"");
2、使用STL函数设置为系统语言环境
std::locale::global(std::locale(""));
没有测试,因为一般存在比较短的路径内。另有人指出在VC2005下cout不能正常输出中文,但ofstream可以正常输出。

没有评论: