2011-05-12 26 views
7

考慮下面的字符*如木炭:創建一個從字符*包括轉義字符

char* s = "\n"; 

這怎麼可能轉化成表示新行字符,像這樣一個單個字符:

char c = '\n'; 

除了處理換行符之外,我還需要能夠將任何帶有轉義字符的字符轉換爲字符。這怎麼可能?

+6

'char c = * s;'工作。字符串中的''\ n''只有兩個字符的形式:編譯後它是一個字符;對於所有其他轉義字符也是如此。編譯後的字符串'「fo \ 111 \ tar」有7個字符(源代碼中可見6個,空終止符)。 – pmg 2011-05-12 18:56:33

+2

@pmg - 這不是一個評論發佈的答案! – JonH 2011-05-12 18:58:20

+0

@pmg:JonH是對的。發帖 – Heisenbug 2011-05-12 18:59:23

回答

9

char c = *s;作品。

'\n'裏面的字符串只有兩個字符的源代碼形式:編譯後它是單個字符;對於所有其他轉義字符也是如此。

字符串"fo\111\tar",編譯後,具有7個字符(在源代碼(6可見'f''o''\111''\t''a',和'r')和空的終止子)。

+0

+1 - 告訴過你:-p – JonH 2011-05-12 19:03:00

+0

是的,沒錯。謝謝@JonH :) – pmg 2011-05-12 19:15:15

+0

非常棒,謝謝@pmg。 – AgileVortex 2011-05-12 20:07:46

1

你的意思是這樣的嗎?

char * s = "\n"; 
char c = *s; 
3

取消對它的引用:

char* s = "\n"; 
char c = *s; 
2

正如其他人所說,換行實際上只有一個字符在記憶中。要從字符串指針中獲取單個字符,可以像訪問數組一樣訪問指針(當然,假設爲指向的字符串分配了內存):

char* s = "\n"; 
char c = s[0];