首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于namespace std的有关问题

2012-03-07 
关于namespace std的问题在ThinkinginC++的C09:cpptime.h下面这样一段:#includectime#includecstri

关于namespace std的问题
在Thinking   in   C++   的C09:cpptime.h   下面这样一段:
====
#include   <ctime>
#include   <cstring>
class   Time   {
        std::time_t   t;
        std::tm   local;
        char   asciiRep[26];
        unsigned   char   lflag,   aflag;
        void   updateLocal()   {
                if(!lflag)   {
                        local   =   *std::localtime(&t);
                        lflag++;
                }
        }
        void   updateAscii()   {
                if(!aflag)   {
                        updateLocal();
                        std::strcpy(asciiRep,std::asctime(&local));
                        aflag++;
                }
        }
};
====
请教高手,strcpy   是否属于   std   名字空间?

[解决办法]
#include <cstring>

<cstring> 是与C标准库的 <string.h> 相对应,但裹有std名字空间的版本
[解决办法]
也就是说
#include <cstring> //包装至std名字空间
using namespace std;
等价于
#include <string.h> //未包装至std名字空间
[解决办法]
在 <cstdio> 里有定义

_STD_BEGIN
using ::size_t; using ::fpos_t; using ::FILE;
using ::clearerr; using ::fclose; using ::feof;
using ::ferror; using ::fflush; using ::fgetc;
using ::fgetpos; using ::fgets; using ::fopen;
using ::fprintf; using ::fputc; using ::fputs;
using ::fread; using ::freopen; using ::fscanf;
using ::fseek; using ::fsetpos; using ::ftell;
using ::fwrite; using ::getc; using ::getchar;
using ::gets; using ::perror;
using ::putc; using ::putchar;
using ::printf; using ::puts; using ::remove;
using ::rename; using ::rewind; using ::scanf;
using ::setbuf; using ::setvbuf; using ::sprintf;
using ::sscanf; using ::tmpfile; using ::tmpnam;
using ::ungetc; using ::vfprintf; using ::vprintf;
using ::vsprintf;
_STD_END

所以,你要使用std::printf

必须包含 #include <cstdio>

string, vector, iostream, 等都包含cstdio

所以你只要包含string, vector, iostream其中一个

或者直接

#include <cstdio>

热点排行