轻舟过
写了个输出自己源代码的程序

一下午就费在写这个程序上了,好累,各种转义字符看得我眼睛花

编译运行以下代码,得到的输出就是代码本身,是不是觉得有点神奇

[mw_shl_code=cpp,true]#include *本站禁止HTML标签噢*

using namespace std;

int main() {

string x = "\tstring temp = \"\";\n\tfor(int j = 0; j < (int)x.size(); ++j) {\n\t\tif(x[j] == \'\\\\\' || x[j] == \'\\\"\' || x[j] == \'\\\'\') {\n\t\t\ttemp += \"\\\\\";\n\t\t\ttemp += x[j];\n\t\t}\n\t\telse if(x[j] == \'\\n\')\n\t\t\ttemp += \"\\\\n\";\n\t\telse if(x[j] == \'\\t\')\n\t\t\ttemp += \"\\\\t\";\n\t\telse\n\t\t\ttemp += x[j];\n\t}\n\tstring a = \"#include *本站禁止HTML标签噢* \\nusing namespace std;\\nint main() {\\n\\tstring x = \\\"\" + temp + \"\\\";\\n\";\n\tcout << a + x << endl;\n\treturn 0;\n}";

string temp = "";

for(int j = 0; j < (int)x.size(); ++j) {

if(x[j] == '\\' || x[j] == '\"' || x[j] == '\'') {

temp += "\\";

temp += x[j];

}

else if(x[j] == '\n')

temp += "\\n";

else if(x[j] == '\t')

temp += "\\t";

else

temp += x[j];

}

string a = "#include *本站禁止HTML标签噢* \nusing namespace std;\nint main() {\n\tstring x = \"" + temp + "\";\n";

cout << a + x << endl;

return 0;

}[/mw_shl_code]

Evanue
换行和制表符要
展开Biu

为什么 换行和制表符要 单独那样处理呢

归到第一类不可以么

[查看全文]
轻舟过
我觉得可以分开写的啊
展开Biu

FSOL 发表于 2012-10-21 19:35

嗯……我觉得可以分开写的啊……比如:

cout

会牵一发动全身的

[查看全文]
FSOL
我觉得可以分开写的啊
展开Biu

嗯……我觉得可以分开写的啊……比如:

cout<<"xxxxxx"

<<"xxxxxx";

这样的……要清楚一点吧……

[查看全文]
轻舟过
为什么不改成用文件流的方式
展开Biu

Cloud_Derek 发表于 2012-9-1 10:41

为什么不改成用文件流的方式,在运行的时候直接读取源代码文件?

然后输出字符串,这样比起在编码时候就 ...

如果可以读文件,那就没有任何挑战性了

[查看全文]
Cloud_Derek
为什么不改成用文件流的方式
展开Biu

轻舟过 发表于 2012-9-1 10:39

是啊

为什么不改成用文件流的方式,在运行的时候直接读取源代码文件?

然后输出字符串,这样比起在编码时候就决定了输出的字符会更好吧

[查看全文]
轻舟过
前面的一串
展开Biu

Cloud_Derek 发表于 2012-9-1 10:19

前面的一串string x= .....

那么一长串的x都是输出内容??

是啊

[查看全文]
Cloud_Derek
前面的一串
展开Biu

前面的一串string x= .....

那么一长串的x都是输出内容??

[查看全文]
五步四里。
完全看不懂
展开Biu

完全看不懂 = = 先跪跪卤煮

[查看全文]