2016-09-12 16 views
1

非リテラル文字列に含まれるエスケープシーケンスを変換する必要があります(最初の文字は\、その他はnr、または8進コードなど)。そのエスケープシーケンス。charを関連するエスケープシーケンスに変換する方法は?

私の最初の考えは、マクロを使用すると可能です(#define to_escape(x) '\(x)'のように動作しませんでした)が、実際にはそのような方法があるかどうか、さらに良い方法があるのだろうかと思います。

もちろん、私は\a,\fとsimilarsのようなエスケープのための簡単なswitch文を使うことができましたが、どのようにして8進数と16進数のエスケープを扱うことができますか?

+0

「\ n」で表される「実際の文字」とは何ですか?あるいは、より一般的に言えば、具体的には、この変容の結果は何ですか? '' \ n' '**は**の文字であることを覚えておいてください。 –

+0

文字列や文字のリテラル( '\ n'の改行、 '\ t'のタブなど)として手作業で入力したときと同じ文字にします。 – user6245072

+0

もう一度: ''\ n''を見たときに何を得たいですか?それを "改行"と呼んでもそれは答えません。それは単に移植可能な文字を移植不可能な名前に置き換えます。 –

答えて

1

そのアドレスが自分のヘキサアドレスと一致して、次の文字を取得できる場合は、このバイトの割り当て

\' single quote   byte 0x27 in ASCII encoding 
\" double quote   byte 0x22 in ASCII encoding 
\? question mark   byte 0x3f in ASCII encoding 
\\ backslash    byte 0x5c in ASCII encoding 
\a audible bell   byte 0x07 in ASCII encoding 
\b backspace    byte 0x08 in ASCII encoding 
\f form feed - new page byte 0x0c in ASCII encoding 
\n line feed - new line byte 0x0a in ASCII encoding 
\r carriage return   byte 0x0d in ASCII encoding 
\t horizontal tab   byte 0x09 in ASCII encoding 
\v vertical tab   byte 0x0b in ASCII encoding 

チェックのために行くことができます。

+0

これは基本的に私が1文字エスケープについて記述したswitch文です。しかし、どのように '\ 077'のような数値エスケープを扱うのですか? – user6245072

+0

あなたは、あなたが探しているものを生成するためにその文字のビットを操作する唯一の方法である、文字を反復することはできません。エスケープ文字のリストです。 Googleと完全なリストを参照してください。 @ user6245072 –

関連する問題