簡體   English   中英

如何使用 c++ 調整文本文件中代碼的縮進?

[英]How to adjust the indentation of code in text file using c++?

我正在將文件 1 的代碼復制到文件 2,但我希望文件 2 中的代碼看起來像這樣調整縮進:在開始縮進 = 0 時,打開的每個大括號都會增加縮進的深度,關閉的每個大括號都會減少例如縮進 4 個空格。 我需要幫助來解決這個問題

char preCh;
int depth=0;
    int tab = 3;
    int d = 0;
    int pos = 0;
    file1.get(ch);
    while(!file1.eof())
    {
            if(ch=='{')
            {
                d++;
            }
            if(ch=='}'){
                d--;
            }
            depth = tab * d;
            if(preCh == '{' && ch=='\n'){
            file2.put(ch);
                for (int i = 0; i <= depth; i++)
                {
                     file2.put(' ');
                }
            }
                else
                file2.put(ch);
        preCh = ch;
        ch = file1.get();
    }
}

結果必須像在代碼編輯器中一樣縮進:

int main(){ 
    if(a>0)
    {
       something();
    }
}

也許,出乎你意料的是,你的問題沒有簡單的答案。

因此,您的代碼將永遠無法工作。

首先也是最重要的,您需要了解和定義縮進 styles。 請在Wikipedia中查看此處。 即使在您給定的迷你示例中,您也在混合 Allman 和 K&R。 所以,首先你必須清楚,用什么。

然后,您必須注意括號可能出現在引號、雙引號、C 注釋、C++ 注釋中,甚至更糟糕的是,多行注釋(以及#if 或#idefs)。 這會讓生活變得非常艱難。

而且,對於右括號,例如 Allman 樣式,只有在打印了“縮進空間”之后,您才會知道所需的縮進。 因此,在打印完整行之前,您需要面向行工作或使用行緩沖區。

例子:

    }

在這一簡單的行中,您將在打印空格后讀取“}”字符。 這總是會導致錯誤的(太右)縮進。

只有這種情況的邏輯會很復雜。 Ant 然后假設語句如

if (x ==5) { y = 3; } } } }

所以,不幸的是我不能給你一個簡單的解決方案。

需要一個解析器,或者我只是推薦任何一種美化器或漂亮的打印機

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM