【发布时间】:2011-02-22 04:48:58
【问题描述】:
我不喜欢using namespace std,但我也厌倦了必须在每个cout、cin、cerr 和endl 前面输入std::。所以,我想给他们起这样更短的新名字:
// STLWrapper.h
#include <iostream>
#include <string>
extern std::ostream& Cout;
extern std::ostream& Cerr;
extern std::istream& Cin;
extern std::string& Endl;
// STLWrapper.cpp
#include "STLWrapper.h"
std::ostream& Cout = std::cout;
std::ostream& Cerr = std::cerr;
std::istream& Cerr = std::cin;
std::string _EndlStr("\n");
std::string& Endl = _EndlStr;
这行得通。但是,上面有什么我遗漏的问题吗?有没有更好的方法来达到同样的效果?
【问题讨论】:
-
这只有在你是一家单人公司并且没有其他人会阅读代码的情况下才可以。像这样的快捷方式只会使代码变得模糊,对于开发团队来说几乎不是一个好主意。
-
Martin:注意点。是的,当代码与其他人一起使用时,这可能不是一个好主意。
-
此处定义的
std::string& Endl与尝试刷新缓冲区的std::endl具有不同的功能。