2011-10-28 2 views
0

Как написать код, чтобы показать себя (печатать код на консоль), используя стандартный C++, только без какой-либо внешней библиотеки?Как я могу написать код, чтобы показать себя

+2

http://en.wikipedia.org/wiki/Quine_%28computing%29 –

+0

Quines в основном сделано как физические упражнения. Если кто-то говорит вам, как это сделать, тогда это становится бессмысленным. – stefaanv

ответ

4

Тада: http://en.wikipedia.org/wiki/Quine_(computing)

На чуть более прагматичной ноте, почти никто не делает. Это бессмысленно. Если вы хотите распространять исходный код, просто поместите его в архив или zip-файл, например, здоровый человек.

+0

Это интересный опыт обучения. –

+4

Сделано гораздо менее интересно, попросив кого-то другого сделать это за вас. –

+0

В принципе, трюк заключается в том, чтобы написать свой код, чтобы он содержал строку. Внутри этой строки есть тот же самый код_, кроме того, где содержимое строки будет (внутри себя), у вас есть символ магического ключа (или два), который больше нигде в коде. Затем вы выводите строку на консоль до тех пор, пока этот ключевой символ не отобразит всю строку, а затем отобразит строку _after_ ключевого символа. –

1
#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() { 
    string line; 
    ifstream sourceFile(__FILE__); 
    if (sourceFile.is_open()) 
    { 
    while (sourceFile.good()) 
    { 
     getline (sourceFile,line); 
     cout << line << endl; 
    } 
    sourceFile.close(); 
    } 

    else cout << "Unable to open source file"; 

    return 0; 
} 
+0

Вызов 'good()', 'eof()', & c как условие цикла почти всегда приводит к программам bugger. Подсказка: почему ваша программа печатает лишнюю пустую строку? –

+2

См. [Здесь] (http://ideone.com/VvnpW) для альтернативной реализации. –

+0

да, это имеет смысл. –