2015-06-14 1 views
1

У меня есть логотип с множеством специальных символов, таких как escape-символы, и я хочу напечатать его на терминале. Как мне это сделать без компилятора, бросающего ошибки «неизвестной escape-последовательности»?В C++, как я могу создать логотип с множеством специальных символов?

Вот несколько примеров кода (который имеет только один проблемный характер - не, скажем, сотни):

void print_logo(); 

int main(){ 
    print_logo(); 
    return 0; 
} 

void print_logo(){ 
    std::cout << "\_ hello _/\n"; 
} 

Обратите внимание, что вручную избежать всех специальных символов в логотипе не вариант.

+1

Вы можете использовать [C++ сырой строки буквальной] (http://en.cppreference.com/ж/CPP/язык/string_literal). –

ответ

5

Как насчет сырых литералов?

#include <iostream> 

int main() 
{ 
    const char* tree = R"===(
     *    , 
         _/^\_ 
         <  > 
    *     /.-.\   * 
       *  `/&\`     * 
         ,@.*;@, 
        /_o.I %_\ * 
     *   (`'--:o([email protected]; 
        /`;--.,__ `')    * 
        ;@`o % O,*`'`&\ 
      * (`'--)[email protected] ;o %'()\  * 
       /`;--._`''--._O'@; 
       /&*,()~o`;-.,_ `""`) 
    *   /`,@ ;+&() o*`;-';\ 
       (`""--.,_0 +% @' &()\ 
       /-.,_ ``''--....-'`) * 
      * /@%;o`:;'--,.__ __.'\ 
       ;*,&(); @ % &^;~`"`o;@();   * 
       /(); o^~; &()[email protected]*&`;&%O\ 
     jgs `"="==""==,,,.,="=="==="` 
      __.----.(\-''#####---...___...-----._ 
     '`   \)_`"""""` 
       .--' ') 
       o()_-\ 
       `"""` ` 
    )==="; 
    std::cout << tree; 
}; 
+1

Вам необходимо предоставить другую последовательность, отличную от '()', например. 'out() out', так как есть символы' '', используемые в искусстве ASCII. –

+0

@ πάνταῥεῖ, я, безусловно, согласен с вашей точкой, но как-то работает на MSVC и gcc. Странный. – ixSci

+0

от C++ 11 дальше, хотя – odedsh

1

Добавить обратный слэш \ каждый слэш:

void print_logo(){ 
    std::cout << "\\_ hello _\/\n"; 
} 

Выход:

\_ hello _/ 




Press any key to continue 
+0

Благодарим вас за предложение. В моем случае, как упоминалось в вопросе, побег над каждым особым персонажем не является вариантом, потому что их сотни, и потому что он делает очень трудным редактировать логотип человеком. – d3pd

 Смежные вопросы

  • Нет связанных вопросов^_^