[英]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.