- 1 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.56【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1215278693/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 77 名前:デフォルトの名無しさん [2008/07/18(金) 04:49:34 ]
- GNUのライブラリを使って、ソフトやライブラリを作ったら
元のGNUのソースを同封しないといけませんか??
- 78 名前:デフォルトの名無しさん [2008/07/18(金) 04:52:32 ]
- 元のソースに手を加える改良の場合は変更後のソースを入れないと駄目なんですよね
改変せず利用するだけならば、入れなくて良いですか? GNUのライブラリを使用していると明記する必要ありますか?
- 79 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 05:03:49 ]
- >>77-78 ライセンス嫁。あと GPL なら GPL FAQ 日本語訳とか。
- 80 名前:デフォルトの名無しさん [2008/07/18(金) 05:25:33 ]
- GNUのコード使ったら、
- 81 名前:デフォルトの名無しさん [2008/07/18(金) 05:29:24 ]
- GNUを利用したら、改変のある無しに関わらず、ソースコードもうpせよ
ってことでOK? 具体的には、GNUコードから、WindowsのスタティックリンクかDLLを作って それを自分のソフトで使用した場合は、自分のプログラムのコードをうpするって事?
- 82 名前:デフォルトの名無しさん [2008/07/18(金) 08:47:02 ]
- 初心者質問てここでいいのですかね?
もしスレ違いなら誘導お願いします。 private継承について質問なのですが、親から継承したメンバはすべてprivateになり 子クラスからアクセスできないものと思っておりますが、違うのでしょうか。 実際コードを書いて確認してみたところ、アクセスできないぽいのですが サイトによってアクセスは可能と書いているところもあるので混乱しています。 アクセスする方法があれば教えていただきたいです。 それと、private継承を調べると「実装の継承」という言葉がたいてい出てくるのですが、 これの意味がよくわかりません。 「実装の継承」の実際の使い方など教えていただけませんか。
- 83 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:06:13 ]
- 書物はまだしも、サイトの記事なんて鵜呑みにする方がどうかしている。
- 84 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:24:31 ]
- getHoge(),setHoge()のような関数(アクセサ)を継承元で書かないとアクセスできないよ。
private継承、実装の継承というのは、基底クラスで定義された関数など「実装」のみを継承し、 インターフェイスや性格については基底クラスと同じものを持たなくて良い =基底クラスのオブジェクトではあれができたから継承先でも出来るだろうという期待が出来ない継承のことかな。 逆にpublic継承というのは、DerivedクラスはBaseクラスの一種であるとみなして操作できなければならなくて、 BaseがCry()と言う関数を持ってたらDerivedも持っていなくてはいけないし(鳴き声は違うにしても)同じような動作をしなくてはいけない。 …という話がEffective C++に詳しく書いてあるので読んでおこう。
- 85 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:02:33 ]
- >>77,78
LGPLかGPLで扱いが変わって来るはず。 glibcとリンクしただけで全てのプログラムが公開されなければいけないなら、 Unix系で商用ソフトなんて作れなくなるよ。 >>81 再配布条件と利用条件は区別して考えてる? 作ったプログラムを公開しないのであれば、何もUPする必要は無いよ。
- 86 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:06:58 ]
- >>83
鵜呑みしないで疑っているからここにいるわけで
- 87 名前:デフォルトの名無しさん [2008/07/18(金) 16:33:35 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 配列の要素を昇順にソートしたときの、添え字の順番を配列に記憶するプログラムを書け。 data = {2,6,3,1,2} なら, index = {3,0,4,2,1}である。 元の配列は書き換えてはならない。 qsortなどのライブラリを用いて構わない。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C C++ [4] 期限: 明日
- 88 名前:デフォルトの名無しさん [2008/07/18(金) 16:52:11 ]
- 誤爆しました・・・
- 89 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:11:05 ]
- そいじゃ、誤爆で
int [] data = { 2, 6, 3, 1, 2 }; int [] index = data.Select((a, i) => new { a, i }).OrderBy(x => x.a).Select(x => x.i).ToArray();
- 90 名前:デフォルトの名無しさん [2008/07/18(金) 20:53:48 ]
- >>84
回答ありがとうございます 実装への直接的なアクセスをできないようにすることで 実装については変更させず、他の部分のみ変更可能にする ということなのですかね Effective C++も探して読んでみます
- 91 名前:デフォルトの名無しさん [2008/07/18(金) 21:44:50 ]
- >>71
だなあ。 結局unsignedのメリットって1bit表現範囲が広がるくらい?
- 92 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:59:32 ]
- unsignedだとオーバーフローで鼻からなんか発生しない。
- 93 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:25:54 ]
- >>91
signedな整数は符号拡張がウザいこともあるし ビット演算や何かとの相性も良くない まあ、適材適所で使い分けろ
- 94 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:40:43 ]
- >>92
鼻から牛乳がオーバーフローしました
- 95 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:30:21 ]
- >>91
境界チェックの比較が1回で済む
- 96 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:14:33 ]
- いつ誰がsignedに書き換えるかわからないんだからそこはちゃんと比較しとけよ
本当にunsignedなら最適化してくれる
- 97 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:16:03 ]
- そうですよね
いつ誰が構造体に書き換えるかわからないですもんね
- 98 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:10:21 ]
- なんでこれで
while( *d++ = *s++ ) 文字列コピーできるんですか?
- 99 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:17:41 ]
- >>98 なんでコピーできないと思うの?
- 100 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:19:20 ]
- while(( *d++ = *s++) != 0)
- 101 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:37:45 ]
- 演算子の優先度が分からないのか、ポインタのインクリメントの意味が分からないのか
- 102 名前:デフォルトの名無しさん [2008/07/19(土) 20:21:47 ]
- std::vector<CTest> hoge;
void testFunc() { for(int i=0; i<10;i++){ CTest test; test.i = i; hoge.push_back(test); } } int main(){ testFunc(); for(int i=0; i<hoge.size();i++){ printf("%d\n",hoge[i].i); } こんなことしても問題ありませんか?一応表示はされたのですが。 std::vector<int>とかはそのまま数値いれてますけど、 std::vector<クラス>の時もnewしないで入れても平気なのかなって思いまして。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 20:28:05 ]
- CTestの実装による
push_back内でnewしてコピーしてるのでnewはいらない で、そのコピーのときにCTestのコピーコンストラクタでメンバのコピーがされる デフォルトコピーコンストラクタでも問題ないなら特にコーディングしてなくてもおk デフォルトコピーコンストラクタじゃだめなら自分で書く必要あり
- 104 名前:デフォルトの名無しさん [2008/07/19(土) 20:38:08 ]
- なるほど。ありがとうございました。
- 105 名前:デフォルトの名無しさん [2008/07/19(土) 21:04:33 ]
- Cを書いてるとエディターの機能で色分けしてくれて表示
されるのは便利なのですが、さらに進んで ある行にカーソルを置くとどういう階層のとこに いるかって機能がついたエディタとかってありますか? 例 main() { if(a==1) { while(b>1) { … if(c==0) { ここ } } } } 「ここ」にカーソルを置くと main()->if(b==1)->while(b>1)->if(c==0) みたいに表示されるやつ
- 106 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:33:41 ]
- それを見たくなるってのは、もしかして、
1つの関数に詰め込みすぎのサインだったりするんじゃないかな。
- 107 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:39:33 ]
- 「そういうコードは書かない方がいい」じゃだめですか
- 108 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:52:23 ]
- 関数の形でかかれているものを問答無用でインラインに展開する方法があればいいな、と思うのですが。
- 109 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:53:22 ]
- VCにそんなオプション有った気が
- 110 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:53:26 ]
- >>108
思うだけにしておいたほうがいいと思います
- 111 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:06:57 ]
- >>108
闇雲にインライン展開しても速くならないんだな。
- 112 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:09:33 ]
- >>105
1画面に収まらない関数は書かないのが鉄則ですう
- 113 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:01:24 ]
- そんなこといっても行数が増えてくると
関数呼び出しだけでも一画面におさまんなくなって 便利な機能な気がするけど… ウィンドウプロシージャとかでかい関数はどうしてもできるわ(´・ω・`) 一つのファイルにいっぱい関数詰め込むととか あとアルゴリズムを激しく書く人はいる気がする。 何千行ものコードを一画面に収まるくらいに 分けたら関数出来過ぎ君だわ なんかおれ必死な感じだけど、便利な気がするけど… ないってことは作るしかないんかな。
- 114 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:04:08 ]
- ウィンドウプロシージャをCで書くならメッセージクラッカ必須だろ。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:06:06 ]
- >>108
inlineじゃだめですか?
- 116 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:27:26 ]
- >ウィンドウプロシージャとかでかい関数はどうしてもできるわ
出来ねぇよ、関数分けろ
- 117 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:30:33 ]
- ファイルで分割しても二桁とか
- 118 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:42:52 ]
- >>713
OK,読み間違えてた ダイビング土下座しながら吊ってくる
- 119 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:43:24 ]
- 誤爆
- 120 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:42:46 ]
- >>115
inlineにしててもインライン展開しないこともあるんだったよな確か?
- 121 名前:デフォルトの名無しさん [2008/07/20(日) 02:50:40 ]
- なるべく最新版のやつで最適化するしかないよ
マクロにすれば確実にインラインになるけど、デバッグが困る
- 122 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:53:58 ]
- >>120
inlineにしなくてもインライン展開されることもあるしね。
- 123 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 03:01:41 ]
- クラッカ使ってないな
そういうのあるんだ 古い人だから#defineとか いっぱい使うとわかんなくなるから カーニハンとリッチーだっけ? あれの本だとcはシンプルで なんとかってのってたけど いいねそれ。 ただ今の時代では違うのかもだけど。 とりあえず今1万7千行くらい switchcase文がいっぱいあるわ。 c標準のデータ型以外は 最低限のやつしかwindows.h系のは 使ってない。 でも昔よりは関数で分けるようになったかも
- 124 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 03:31:34 ]
- >分けたら関数出来過ぎ君だわ
それくらいがむしろ普通
- 125 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 03:51:00 ]
- ウィンドウプロシージャには
関数分けするためのマクロが用意されているくらいなのにな。
- 126 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:22:05 ]
- VCでマルチバイトというとUTF-8、UNICODEというUTF-16ですよね?
SJISで作ったテキストファイルも普通に読み込んでいると思うのですが何故でしょう?
- 127 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:30:13 ]
- マルチバイトというと(一般的な日本語Windows環境では)CP932だと思うが。
- 128 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:42:54 ]
- CP932、ググるSJISの拡張ということで互換性あるのかな
どうもUTF-8だと思ってたのは勘違いのようですね 文字コードってユーザーとして意識したことないから難しい...
- 129 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 08:55:06 ]
- >>112
そんな鉄則ねえよ。
- 130 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:25:29 ]
- あるよ。井戸の外には
- 131 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:30:20 ]
- 「愚かな一貫性は小人物に憑いたおばけである」
という言葉があってのう
- 132 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:45:18 ]
- 1画面なんて言われたら、250桁×100行でも許容しろってことかよ。
冗談じゃねぇ。
- 133 名前:デフォルトの名無しさん [2008/07/20(日) 13:49:48 ]
- 分かり易ければ1画面に収まる必要まったくなし
こだわってるやつはたいてい頭悪い
- 134 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:54:50 ]
- >>132
1600x1200?w 寧ろ、3分割して80桁x300行とか嫌そうだw
- 135 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:56:38 ]
- A4一枚とかはよく見聞きする話
- 136 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:06:39 ]
- 明日から7ptフォントで開発しとけよ。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:10:04 ]
- 初心者には一画面以内 must で教える
上達したら一画面越えてもいいよと教える
- 138 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:14:15 ]
- マクロで質問です。
#pragma message("hogehoge") をマクロにしたいんですが... 次のやり方でコンパイラが怒ります...。 #define _message( str ) #pragma message( str ) どう登録すれば良いんでしょうか?
- 139 名前:デフォルトの名無しさん [2008/07/20(日) 14:22:41 ]
- プラグマをマクロにした例はみたことないなぁ
できないんじゃないの?
- 140 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:24:27 ]
- できないよ。
- 141 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 14:53:05 ]
- だからC99で_Pragmaが追加された。
VC++も2008から__pragmaという名称で同じ機能を用意している。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 15:17:57 ]
- プラグマをマクロ化って。
誰が得するんだ…。
- 143 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 15:22:58 ]
- >>142
処理系によってプラグマの書き方が異なる場合
- 144 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 15:37:54 ]
- >>143
いや理論的にはそんなんだけど、俺の未熟な経験からは 使った方が便利だってケースが思い当たらない。 そんで誰が得するのかな、と。
- 145 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:06:04 ]
- >>144
処理系A #pragma align packed 処理系B #pragma pack(1) だとすると、構造体の定義のたびに、 #if defined(_IMPL_A) #pragma align packed #elif defined(_IMPL_B) #pragma pack(1) #endif struct S {...} #if...さらにアライメントを元に戻すpragma と書かないといけない。 さらに処理系C #pragma options align=packed を追加したくなったら、もううんざりだ。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:14:15 ]
- includeでやるのはどう?
- 147 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:17:04 ]
- >>146
うん。実際そうやってた。 でも美しくないんだよねえ。構文的に
- 148 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:39:11 ]
- >>130
井戸の中にしかないと思われ。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:16:25 ]
- VC++2005EEで作成しています。
有る関数の中でループを毎に乱数を発生させ、配列に値を保存させようとしたのですが 実行画面では同じ数値に成ってしまいました。デバックをしてみたところ @1から見ていくと、配列にちゃんと違う数値が入っていき、ループを抜けた @2までみても違う数値が保存されていました。 @2にブレークポイントを設定し、そこで値を確かめるとListの値には 同じ数値が配列に保存されていました。 全て値がう値が保存されている様にしたいのですが、何が問題になっているのか見当がつきません。 何か対策とかあるのでしょうか srand( (Uint32)time(NULL) ); m_Tmp = new Object(); @1 for ( Uint32 i=0; i<MAX; ++i ) { m_List.push_back( *m_Tmp ); m_List[i].SetNum( rand() % 10 ); } @2 ※SetNumは与えられた値を保存させるだけのメソッドです。
- 150 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:19:22 ]
- STLのstd::vector<int>とか使ったらいいとおもうよ。
- 151 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:22:06 ]
- m_Listは std::vector<Object> m_List;で宣言してあります。
- 152 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:26:02 ]
- Object()のコピーコンストラクタとか、どっか実装がおかしいんじゃね?
- 153 名前:デフォルトの名無しさん [2008/07/20(日) 17:27:51 ]
- >>149
ちょwww これはだめでしょ Object は最初に1回 new しただけでしょ? そこに値をどんどん入れて行ったら、当然同じインスタンスに値をどんどん突っ込むわけで、 最後には、一番最後に代入した値ばっかりのリストになるよwww
- 154 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:28:56 ]
- >>149
Object の定義が怪しい。 SetNum の値をポインタの先に保存してて、 Object のコピーでは ポインタがコピーされてるとか。 >>153 push_back(*m_Temp) だから、そこが問題じゃないでしょ。
- 155 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:29:38 ]
- 済みません。事故解決しました。
SetNumで違う変数に値を保存してました。お騒がせしました orz
- 156 名前:149 [2008/07/20(日) 17:30:23 ]
- そっか、push_back でコピ^コンストラクタが動くのか、
じゃあ152が正しいか。
- 157 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:22:03 ]
- 現在自作ゲームで文字の時間差表示をしようとしているのですが、
string script="abcde"; string strbuf=""; int moji=0; for(int i=0;i<script.size();i++){ strbuf+=script[moji]; //ここでstrbufの内容を表示 //ここにwait処理が入る moji++; } strbuf=""; moji=0; scriptの中身が1バイト文字だと正常に表示されるんですが、 2バイト文字だと文字の背後に・(黒点?)が表示されてしまいます stringは2バイト文字は使えないんでしょうか?
- 158 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:23:27 ]
- wstringとか
- 159 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:32:17 ]
- マルチバイト文字列用のルーチン使って文字を切り出すか、UTF-16をつかう。
おそらくstd::stringで1バイトづつ出力させてるんだろうけど、それやっちゃうと2バイト文字は半分ちぎれたりするから正常に表示できない。 ちゃんと2バイト文字は2バイトづつ出力させるか、2バイト固定のUTF-16使えばOK。 荒技としては逆に1バイト文字を使わないという手もある。(全角数字、全角アルファベット、全角記号で代用)
- 160 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:35:47 ]
- なるほど、要はscript[moji*2]とかループを1/2回にするなり
数字は全角で書くなりすれば良いわけですね ありがとうございます
- 161 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:44:30 ]
- >>159
UTF-16だから2バイト固定なんてことが許される時代はもう終わっているよ。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:47:14 ]
- サロゲートなんて捨ててOK
- 163 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:52:10 ]
- C/C++って、マルチバイト文字の、先頭か二番目以降かって判定する関数なかったっけ?
標準でなくても、それぞれのプラットホームには必ずあると思うけど。
- 164 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:52:40 ]
- [゛], [゜] も捨ててかまわないってことで。
- 165 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:57:08 ]
- >>162
つUTF-8, UTF-32
- 166 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:59:55 ]
- >>163
そんなレガシー技術に頼るぐらいならUnicodeにしとけよ UTF-8では先頭バイトと後続バイトはMSB側の2bitを見るだけで簡単に区別できるし 先頭バイトだけで後続バイト数は判断できるし 後続バイトがASCII文字と重なるようなこともない マルチバイト処理は必要だが、レガシーなエンコーディングスキームよりは ずっといい性質を持っている
- 167 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:00:00 ]
- >>165
つwchar_t
- 168 名前:166 mailto:sage [2008/07/20(日) 23:04:30 ]
- 補足。
euc-jpやiso2022系では、「lead byteかどうか」は特定の2バイトを見ただけでは 判断できない。 行頭なり何なりから順番に舐めるしかないはずだよ。 >>163の言っているような"iskanji"風のレガシーなクソマクロは、特定の条件でしか 役に立たないものだ。
- 169 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:09:52 ]
- >>168
先頭から見ないとわからないってのは、EUCのほうじゃなくてShift JISのほうでは?
- 170 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:15:37 ]
- なんで文字コードごときの話でそんな偉そうにできるんですか?
- 171 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:18:27 ]
- >>170
皆、思い思いに書いてるだけだよ。 偉そうに見えるのはおそらく・・・
- 172 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:23:01 ]
- >>169
EUCで簡単なのは1byteコードと2byteのコードの識別だけで、 lead byteとtrail byteの識別は難しいのでは?
- 173 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:31:16 ]
- 入出力(ファイル、パイプ)はともかく、
内部コードにUTF-8, UCS2, UTF-16, UTF-32以外を使うのは止めておけ。 マジで。
- 174 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:40:52 ]
- wchar_tはC/C++の定義上1文字なので、
固定サイズであるUCS2/UTF-32と考えるのはそれほど問題でないが、 可変サイズであるUTF-8/UTF-16として扱うのは完全にNG
- 175 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:43:05 ]
- VC++で、ソースコードをUTF-8で保存してコンパイルしたら、"文字列" がUTF-8になってくれればいいんだけどね
- 176 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:50:50 ]
- VC++(UCS2)/gcc(UTF-32)での可搬性を考えると、
wchar_t=UCS2と想定するのが良い UTF-16、UTF-32はC++0xが出てくるまで我慢
- 177 名前:176 mailto:sage [2008/07/20(日) 23:53:11 ]
- もちろん、ICUなどで提供されている型や関数を使っている人は除く
|

|