2015-09-20 50 views
0

是否有可能通過轉義序列自動將printf()字符串自動轉換爲toupper()tolower()?怎麼做?如何創建新的轉義序列?

轉義序列是打印時具有「\」反斜槓的序列。 tolower()使您可以將大寫字母轉換爲小寫字母。 toupper()使您可以將小寫字母轉換爲大寫字母。但是,是否可以創建/添加也具有tolower()和toupper()的相同函數的轉義序列。例如,我將創建新的轉義序列「\ u」和「\ l」。 \ u作爲toupper(),它會像這樣使用。

printf("\u hello world"); 

輸出:

HELLO WORLD 

旁邊的轉義序列字符串將被轉換爲大寫字母。 \ltolower()也是一樣的。 如何做到這一點?請幫幫我。

+2

使用[touppe r](http://www.cplusplus.com/reference/cctype/toupper/)來轉換字符串,並且通常在某些實現中打印 – amdixon

回答

0

不,這是不可能的。

1

是否有可能使整個printf()串通過轉義序列自動轉換toupper()tolower()

不,你不能那樣做。

轉義序列由語言定義。你不能添加到他們。

+2

,您可以擴展printf格式。例如。 [glibc extensions printf](http://www.gnu.org/software/libc/manual/html_node/Customizing-Printf.html) – amdixon

+1

@amdixon,true。這可能是OP需要使用的,但他們用不同的方式表達了它。 –

1
  • 可以使新的功能Printf_new()並在這您可以再次解析
  • 它的參數,並得到\i\u並根據該
  • 呼叫 toupper()tolower()轉換您的字符串,然後
  • 請致電 原件printf()
+1

注意:您不能使用'\ i'和'\ u',因爲您不能添加反斜槓轉義序列。你可以使用'%I'和'%U'或類似的東西。 – immibis

+0

@immibis添加您的評論「C11 6.11.4字符轉義序列」「作爲轉義序列的小寫字母保留給未來的標準化,其他字符可用於擴展名。」 – chux