- 1 名前:デフォルトの名無しさん [2007/11/03(土) 00:20:13 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.43【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1190860744/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 47 名前:nkkn5 [2007/11/03(土) 21:49:17 ]
- >>38、39 さん (再)
どうやら、うまく行っていなかったのも isprintのせいのようです。 isprintに128以上の数値を渡すと、 0が返ってきます(私の実験です)。 ---実験コード--- for (int i = 0; i <= UCHAR_MAX; i++) { cout << setw(3) << char(i) << ' ' ; cout << setw(3) << (isprint(i) ? char(i) : '-') << ' ' ; cout << setw(3) << isprint(i) << ' ' ; // <--- この部分128以上では0 cout << setw(3) << dec << i << endl; } ---------------- そのため、カタカナがでるような数値になると 私の前のコードではスペースに置き換えられて いたために出力されていないように見えて いたのだしょう。 つづく
- 48 名前:nkkn5 [2007/11/03(土) 21:50:54 ]
- つづき
(訂正) いたのだしょう--->いたのでしょう なぜカタカナが非表示文字と判断されるのか、?です。 そういう仕様なんでしょうか。 ただ英語圏生まれのため、isprintとしては そういうことになるのかな、とも思っております。 違いますでしょうか。 また、上記のコードを、 setlocale(LC_ALL, ""); 後に実行すると、 ループ自体が128で止まってしまいます。 UCHAR_MAX自体は(表示させてみたところ) 255のまま変わっていないのですがね、、、 (こちらも?ですが、setlocaleは 私にはレベル的に早いかなーという気がします。 私の見ている本には載ってませんし。)
|

|