我正在C++中爲參數化字符串(用於指定終端的某些終端功能)實施解析器。那時,我發現這個% encoding
傳來的terminfo的man page:在terminfo參數化字符串中'%1'編碼
%l push strlen(pop)
所以,我的問題是,每當我們推什麼壓入堆棧,它是當這些下列% encodings
遇到:
%p[1-9] push ith parm
%’c’ push char constant c
%{nn} push decimal constant nn
%l push strlen(pop)
%+ %− %* %/ %m (arithmetic): push(pop integer2 op pop integer1)
%& %| %^ (bit operations): push(pop integer2 op pop integer1)
%= %> %< (logical operations): push(pop integer2 op pop integer1)
%A %O (logical operations): and, or
%! %~ (unary operations): push(op pop)
當遇到這些問題並計算出結果並且結果即將推入堆棧時,然後是一個整數(包括0或1的bool結果)或一個字符將被推入堆棧,然後是%l encoding
意味着任何或沒有下述的:
彈出從堆棧和
if a character push 1 onto stack
和if an integer push #digits_in_that_integer onto the stack
單個值。彈出從堆棧的字符串(因爲
%l
使用strlen
寫入manpages)(彈出一個字符串:保持彈出直到堆棧爲空),然後推回彈出字符串的長度壓入堆棧。
所以,我的問題是什麼意思%l push strlen(pop)
,其長度是它在說什麼?
獎金問題:在terminfo的參數化字符串的情況下(在上面提到的第二個項目符號點)彈出字符串的方式是正確的嗎?
編輯:正如Thomas Dickey,現在我所指的是this man page of terminfo。
感謝您的回答,現在我指的是[此手冊頁](https://linux.die.net/man/5/terminfo),如果您想詳細闡述__ncurses分析功能字符串以確定一個特定的參數是否將被解釋爲一個字符串(不管它是否與%1或%s匹配),並且每當使用該參數時,它將爲字符串_提供一個示例,謝謝:) – tkhurana96
實際上,這個手冊頁](https://linux.die.net/man/5/terminfo)是一個如何不格式化一個手冊頁的例子,我在這裏詳細討論了[here](http:// invisible-island。淨/腳本/ man2html.html)。我添加了一個權威的鏈接到我的答案。 –