C/C++ 代码转换规范化的脚本

一般从PDF复制下来人家的代码到TXT都是无脑缩进, 贴近最左侧; 本文主要解决这类问题。对无脑缩进到顶头的代码进行规范整理; 应该有很多IDE有这个功能

很多情况下, 都会从网上黏贴下的代码非常不规范, 没有进行合理的缩进; 于是就有了下面这个工具的产生

功能简述

  • 初始化文档; 就是去掉首位的空格, del_sw_space(string )
  • 合理缩进, 根据大括号出现的次数
  • 解决 for/if 单行执行的缩进

代码

def setCountTab(i):
    return ''.join(['\t' for x in range(i)])

def del_sw_space(string):
    start = 0
    end = len(string)-1

    while(start < end+1):
        if string[start] is not ' ':
            break
        else:
            start += 1

    while end >0:
        if string[end] is not ' ':
            break
        else:
            end -= 1

    return string[start:end+1]

#print ('AAA' + del_sw_space(' fsd  sdfa s fs dsa  sadafew   ') + 'QQQ ')


def k2(file1, file2):

    modify_file = open(file2, 'w+')

    g_iTabCount = 0
    flag = 0 ###记录反括号缩进标志 falg = 0 表示目前有表示了

    for line in open(file1, 'r+', encoding = 'utf-8').readlines():

        if flag == 1:
            modify_file.write('\t')
            flag = 0

        modify_file.write(setCountTab(g_iTabCount))
        modify_file.writelines(del_sw_space(line))
        if '{' in line:
            g_iTabCount += 1

        if '}' in line:
            g_iTabCount -= 1

        if '//' in line:  ##专门解决 () // 下面换行的有注释的情况
            pre_line = del_sw_space(line.split('//')[0])
            print(pre_line)
            if pre_line.endswith(')'):
                flag = 1

        if line.endswith(')\n')  :
            flag = 1

    modify_file.close()


file1 = 'L:\\py_2cpp\\demo.txt'
file2 = 'L:\\py_2cpp\\temp.txt'

k2(file1, file2)