- 締切済み
C++の基礎的なこと
例えば、"表.txt"という文字列を、 char Path[90]にいれたとしたら、 Path と "表.txt"は同じものとなりますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6803/9675)
回答No.1
…えーと。 ひょっとしてシフトJISの罠にハマってませんか? シフトJISで「表」の文字コードは、0x95 0x5c です。 この2バイト目が問題で、0x5c 単体で見ると、「¥」記号なのです。 "表.txt" とソースに書き、マルチバイト文字を気にしないコンパイラにかけると、 0x95 + "¥.txt" と解釈してしまいます。 "¥."の部分は単に"."の表記と解釈され、バイナリデータとしては結局 0x95 '.' 't' 'x' 't' の5バイトになります。 シフトJISには、「表」以外にも、2バイト目0x5cの「ダメ文字」が結構あります。 http://sites.google.com/site/fudist/Home/grep/sjis-damemoji-jp それでもそれらの漢字を使いたいときには、ダメ文字の後ろにひとつ¥記号を置くと、「¥¥」→'¥'になって、想定したデータが得られます。 →"表¥.txt"
補足
回答有り難うございます。ただ、"表\.txt"としてもダメでした・・・ ShellExecute(hWnd,"open","表.txt",NULL,NULL,SW_SHOW)と直接指定すればもちろん開くのですが、 ShellExecute(hWnd,"open",Path,NULL,NULL,SW_SHOW)では成功しないのです。。。 ブレークポイントをおいてみても、Pathには"表.txt"が入っているのですが・・・