これは主にWinAPI RegSetValueExに関する質問です。 MSDN hereの説明を見ると、Windowsレジストリ内の文字列のスラッシュをエスケープする必要はありますか?
lpData [in]格納されるデータです。
REG_SZの場合、文字列はNULLで終了する必要があります。 REG_MULTI_SZデータ タイプの場合、文字列は2つのヌル文字で終了する必要があります。 バックスラッシュの前に、エスケープ 文字として別のバックスラッシュを付ける必要があります。たとえば、 "C:¥¥mydir¥¥myfile"と指定すると、 という文字列 "C:¥mydir¥myfile"が格納されます。
私は本当にスラッシュをエスケープする必要がありますか?私は以前にそれをやったことがないので、それは完璧にうまくいった。
エスケープはC++であり、メソッドではありません。たとえば、コマンドラインからユーザー入力を取り止めようとしている場合、\をすべての\に含めるようにテキストを変換する必要はありません。しかし、 "C:\ ..."のようなコードで文字列リテラルを使用する場合は、C++ソースに "C:\\ ..."が必要です。私はこれがドキュメントが話しているものと仮定しています。あなたが実際に "C:\\\\ ..."を行う必要があることを意味するチャンスがあります(この場合、ユーザ入力を変換する必要があります)。 – Corbin
@Corbin :)それは大きな違いをもたらします。彼らがドキュメントにどのように記述しているかは非常に混乱しています。 – ahmd0
良い質問ですが、この文書は本当に奇妙です –