2016-06-01 1 views
0

#define nd '\n'이 좋은 이전 대체품 인 '\n'에 대한 대안인지 궁금합니다.#define <anyName> ' n'대신 ' n'

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

변수 또는 반복자를 인쇄하는 동안이 방법이 유용 할 것이라고 생각합니다. 몇 가지 키 입력을 저장합니다. #define nd '\n'이 좋은 오래된 std::endl에 수용 대안 인 경우

+3

무엇을 허용할까요? 난독 화를 위해서? 개행을 원하면 개행을 인쇄하십시오. 개행 후에 버퍼를 플러시하고 싶다면'std :: endl'을 사용하십시오 –

+3

'std : endl'은 단지'\ n'이 아닙니다.보다 간단한 사용 "\ n"을 위해서 – P0W

+0

@tas입니다, 그렇습니다 std :: endl 사용할 수 있습니다 필요하다면. – harb7nger

답변

1

이 내가 키 입력을 저장하지, "플러시하지 않고 새로운 라인을 쓰기"않는 조작에 대한 몇 가지 사용을 가정하지만 순진 버전 (os << '\n' 또는 os << "\n"가) 바람직하지 않은 패딩을 생성 할 수 있기 때문에 os.width()가 큰 경우 1보다 작고, 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')); 
} 

은, 그건 그냥 무의미 난처합니다.

1

궁금 해서요?

아니요. 가 동일하지 그래서,

  1. 인쇄 줄 바꿈 솔루션은 전자를 수행

반면

  • 세척 스트림 : std::endl 두 가지를 수행합니다.

    반면에이 매크로는 문자 '\ n'과 비교하여 키 스트로크를 줄이면서 혼란을 가중시키지 만 좋지 않은 것보다 더 해를 끼칠 수 있다고 생각합니다.

  • +0

    예, 사실입니다. << "\ n"의 대체품으로 질문을 수정해야합니다. – harb7nger

    1

    아니요. 받아 드릴 수없는. 개행을 원하면 '\n'을 입력하고 버퍼를 플러시하려면 std::endl을 사용하십시오. 귀하의 코드를 읽는 사람은 귀하의 매크로가 무엇을 의미하는지 알지 못하며, 중요한 노력은 귀하 자신의 부분에 저장되지 않습니다.

    +0

    예, 동의했습니다. 얼마나 유용했는지 알고 싶습니다. – harb7nger

    관련 문제