2015-09-20 29 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