#define <anyName> 'n'而不是'n'

#define <anyName> ' ' instead of ' '

本文关键字:gt lt anyName #define      更新时间:2023-10-16

我想知道#define nd 'n'是否是旧'n'的可接受替代品?

#include <iostream>
#define nd 'n'
int main(){
    std::cout << "Hello World !" << nd ;
}

我觉得这在打印变量或迭代器时会派上用场,确实节省了一些击键。

我想

,操纵器有一些用途,它确实"写一行新行而不刷新",不是为了节省击键,而是因为如果os.width()大于 1,朴素版本(os << 'n'os << "n")可能会产生不需要的填充,并且写os.put('n')很烦人。

所以:

template<class charT, class traits>
std::basic_ostream<charT, traits>& newl(std::basic_ostream<charT, traits>& os) {
    return os.put(os.widen('n'));
}

至于你的宏,这只是毫无意义的混淆。

我想知道#define nd 'n'是否是可接受的替代方案 好老std::endl

没有。 std::endl做两件事:

  1. 打印换行符
  2. 冲洗流

而您的解决方案仅执行前者,因此它不等效。

另一方面,与文字""相比,此宏节省了很少的击键次数,同时增加了混乱,以至于我认为它弊大于利。

不。不可接受。如果需要换行符,只需键入 'n' ,如果还想刷新缓冲区,请使用 std::endl 。没有人会阅读你的代码,不会知道你的宏意味着什么,你自己也不会节省任何精力。