最近编写了一个C++代码格式化的小程序。
程序主要要求实现对C++代码的格式化,以使程序代码美观。
我的程序主要实现以下的功能:缩进采用ANSI的格式,采用缩进4格的模式。遇到分号则换行另启一行。
参考是开源程序astyle,下载地址:http://download.csdn.net/source/438852
如以下程序代码:
int
main()
... {
int a = 10; int b = 0;
int i;
for ( i=0; i < a; i++ )...{
b = b+i;}
}
... {
int a = 10; int b = 0;
int i;
for ( i=0; i < a; i++ )...{
b = b+i;}
}
格式化后程序如下;
int
main()
... {
int a = 10;
int b = 0;
int i;
for ( i=0; i < a; i++ )
...{
b = b+i;
}
}
... {
int a = 10;
int b = 0;
int i;
for ( i=0; i < a; i++ )
...{
b = b+i;
}
}
程序思路:
读文件,输入文件名,读入文件
以行为单位,读入文件,存入<list>中
去除每行中无用的空格,tab字符
处理每一行的字符
如果是“{”,结束前面的处理,申请新行,压入应该缩进的空格,存入“{”,记录变量加1(以这个变量记录应该缩进空格),再申请新行,压入应该缩进的空格
如果是“}”,结束前面的处理,申请新行,压入应该缩进的空格,存入“{”,记录变量减1(以这个变量记录应该缩进空格),再申请新行,压入应该缩进的空格
如果是“;”,压入“;”,结束旧行处理,申请新行,压入应该缩进的空格(for中“;”应该另处理)
如果是行结束,结束旧行处理,申请新行,压入应该缩进的空格
直到处理完全部。
将处理完结果写入文件,为防止格式化过程出现错误,应该把源文件另外保存。
过两天再把代码发上来吧。