トップページ⇒tech
1001コメント296KB

C++相談室 part21

■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v NGNG
C++に関する質問はこちらへどうぞ。
ただし質問の前にFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。

過去スレ、関連スレ、関連リンクなどはこちら>>2-10
0002デフォルトの名無しさんNGNG
2get...?
0003v(^・^)vNGNG
■基本■
[Stroustrup]
禿 http://www.research.att.com/~bs/
C++に関するリンクの総本山でもあります。

[C++ Final Draft International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf

[JTC1/SC22/WG21 - C++]
http://std.dkuug.dk/jtc1/sc22/wg21/
規格書の重箱の隅的な話題などが読めます。

[C/C++ Users Journal]
http://www.cuj.com/
[Object Management Group]
http://www.omg.org/
[Association of C & C++ Users]
http://www.accu.org/

[news]
news:comp.lang.c++
news:comp.lang.c++.moderated

[ML]
cppll(日本語) http://www.trickpalace.net/cppll/
メインページにC++に関する良質なC++日本語リンク集があります。
0004v(^・^)vNGNG
■Document■

C++FAQ Lite http://www.parashift.com/c++-faq-lite/
C++FAQ(日本語) http://www.bohyoh.com/CandCPP/FAQ/
Cとその仕様を比較しながらの解説なので分かりやすい。
*** 質問の前に必ずこの二つに目を通してください ***

[STL]
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
Standard Template Library プログラミング on the Web
リファレンス的内容。http://www.wakhok.ac.jp/~sumi/stl/
STL Programmer's Guide http://www.sgi.com/tech/stl/
[boost]
これに関しては公式のドキュメント、又はソースを読むのが一番です。
ただし日本語でいくつか有益な情報が読めます。
Let's boost http://www.kmonos.net/alang/boost/
shinichiroさん http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
news news:gmare.comp.lib.boost.devel
0005v(^・^)vNGNG
■Books■
amazon.com C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
http://www.amazon.com/exec/obidos/ASIN/0201700735/
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/(翻訳)
C++ Primer (3rd Edition)
http://www.amazon.com/exec/obidos/ASIN/0201824701/
http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/(翻訳)
The C++ Standard Library
http://www.amazon.com/exec/obidos/ASIN/0201379260/
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/(翻訳)
Effective C++
http://www.amazon.com/exec/obidos/ASIN/0201924889/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/(翻訳)
More Effective C++
http://www.amazon.com/exec/obidos/ASIN/020163371X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/(翻訳)
Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/0201615622/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/(翻訳)
More Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/(翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/(翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
0006v(^・^)vNGNG
■Compiler■
[GCC]
http://gcc.gnu.org/
(Windows上でのPOSIX環境構築 http://www.cygwin.com)
[Borland C++ Compiler]
http://www.borland.co.jp/cppbuilder/freecompiler/
[.NET Framework SDK]
1.0 http://www.microsoft.com/japan/msdn/netframework/downloads/sdk.asp
1.1 http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp
[MSVC] コンパイラ以外のツール、ドキュメントです。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
(一括ダウンロードの時は上のURLに続けてこちらを入力してください
default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm)

なお上記三者を組み合わせたプログラミングにおいてはこちらが分かりやすいです。
http://www.geocities.com/Tokyo/Ginza/5432/documents/winprog/index.html

[DigitalMars]
http://www.digitalmars.com/
[OpenWatcom]
http://www.openwatcom.org/
[Comeau]
http://www.comeaucomputing.com/
[intel C++ Compiler]
http://www.intel.com/software/products/compilers/
[metrowerks]
http://www.metrowerks.com/mw/default.htm
0007v(^・^)vNGNG
■Libraries■
Boost http://www.boost.org/
STLport http://www.stlport.org/
Loki http://www.moderncppdesign.com/
LokiPort
MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
MSVC6.0 SP5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport

ACE/TAO http://www.cs.wustl.edu/~schmidt/
Network、Thread、ORBなどのポータブルなライブラリ
Blitz++ http://www.oonumerics.org/blitz/
数値計算ライブラリとして人気がある、らしい
antlr http://www.antlr.org/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
パーサジェネレータ

他ライブラリリンク集
http://www.trumphurst.com/cpplibs/cpplibs.phtml
0008v(^・^)vNGNG
Part1 http://piza.2ch.net/tech/kako/980/980175292.html
Part2 http://pc.2ch.net/tech/kako/996/996640937.html
Part3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
Part8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
Part9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
Part10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
Part11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
part12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
part13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
part14 http://pc2.2ch.net/tech/kako/1041/10413/1041328679.html
part15 http://pc2.2ch.net/tech/kako/1043/10436/1043605481.html
part16 http://pc2.2ch.net/tech/kako/1045/10457/1045746245.html
part17 http://pc2.2ch.net/tech/kako/1047/10475/1047560042.html
part18 http://pc2.2ch.net/tech/kako/1050/10501/1050177746.html
part19 http://pc2.2ch.net/test/read.cgi/tech/1052625846/
part20 http://pc2.2ch.net/test/read.cgi/tech/1055162298/
0009v(^・^)vNGNG
■関連スレ(テンプレートを用いたライブラリ中心)■
【C++】template 統合スレ -- STL/Boost/Loki, etc.
part1 http://pc2.2ch.net/tech/kako/1037/10377/1037795348.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
【C++】Boost使い集まれ!
http://pc2.2ch.net/test/read.cgi/tech/1033830935/l50

STLスレッド
part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
0010v(^・^)vNGNG
■関連スレ(環境依存の話題)■
[GCC]
GCCについて
part1 http://pc2.2ch.net/tech/kako/1007/10077/1007731543.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50
祝・GCC 3.0リリース http://pc.2ch.net/test/read.cgi/unix/992942337/l50
[Digital Mars]
Code of the Nerds" Digital Mars C/C++
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[Borland]
C++Builder相談室
part1 http://piza2.2ch.net/tech/kako/969/969458279.html
part2 http://pc.2ch.net/tech/kako/997/997074601.html
part3 http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
part4 http://pc2.2ch.net/tech/kako/1035/10355/1035596146.html
part5 http://pc2.2ch.net/tech/kako/1045/10455/1045542179.html
part6 http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50
タダで使えるBorland C++!
part1 http://pc3.2ch.net/tech/kako/1002/10023/1002377328.html
part2 http://pc2.2ch.net/tech/kako/1030/10304/1030493157.html
[VisualC++]
VisualC++相談室
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc2.2ch.net/tech/kako/1036/10368/1036897197.html
0011v(^・^)vNGNG
初心者にVisual C++を教えるスレ
part1 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
part2 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
part3 http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html
part4 http://pc2.2ch.net/test/read.cgi/tech/1044196393/l50
part5 http://pc2.2ch.net/test/read.cgi/tech/1048698321/l50


VisualC++(MFC限定)相談室 MFC7.dll
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
COM の世界を斬る!
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
ATL 相談室
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
managed C++ やろうぜ!!
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
0012デフォルトの名無しさんNGNG
オツカレーション
0013デフォルトの名無しさんNGNG
>>1
乙。
0014デフォルトの名無しさんNGNG
インスタンス化された関数テンプレートのポインタを取得したいのですが、以下の書き方ではエラーになります。
template<typename T> void func() { hoge };
void (*ptr)();
ptr = func<A>; // error: void(void) から void (__cdecl*)(void) に変換できません。
ptr = &func<A>; // 同上

どのように書けばよいでしょう?
VC++6.0 SP5 です。
0015デフォルトの名無しさんNGNG
>>14
func<A>とかfunc<B>とかは全部オーバーロードされた関数として
扱われるので、明示的にキャストなどが要るはず。
 ptr = (void(*)()) &func<A>;
0016デフォルトの名無しさんNGNG
>>15 ありがとうございます。
しかし、駄目でした。
error: '' から 'void (__cdecl *)(void)' に変換することはできません。

空欄の型とはいったい。コンパイラのせいなのかな。
駄目そうだったらおとなしく仮想関数を使います。
0017デフォルトの名無しさんNGNG
>>16
これは
typedef void pf();
pf p= fn<int>;
p();
0018oisnNGNG
>>1
また前スレの1さんでつか?
乙でし!
またよろしくおながいいたしますm(__)m
0019デフォルトの名無しさんNGNG
>>18
ふざけんな!
0020デフォルトの名無しさんNGNG
pf *p = fn<int>の間違い
002118NGNG
>>19
どこがふざけとるん?
0022デフォルトの名無しさんNGNG
VC7で
void (*pf)();
pf=func<int>;
これはコンパイルできないけど

void (*pf)()=func<int>;
これはコンパイルできる。なんで?
0023デフォルトの名無しさんNGNG
>>21
> また前スレの1さんでつか?
0024デフォルトの名無しさんNGNG
>>17
駄目でした。
最初のエラーと同じ 'void(void)' から 'void(__cdecl *)(void)' に変換できません。

特殊化を定義しておくと通ったりしてちょっと謎。
template<> func<A>() { hage }
ptr = func<A>; // OK
コンパイラのせいかな?
002521NGNG
>>23
勝手な思い込みでした。気分害してスマソ。
新スレありがとう。。。
0026デフォルトの名無しさんNGNG
>>25
ネタだけどな。
つーかなんでそう思ったん?
名前欄か?
0027デフォルトの名無しさんNGNG
>>24
確実にコンパイルできる方法

template <class T> struct foo{ static void bar(){/*hoge*/} };

void (*pf)();
pf=foo<int>::bar;
002826NGNG
>>25
v(^・^)vさんをコテハンだと思いますたTT
いつもこのスレには本当にお世話になり、頼りに
しています。(自分は会社勤務ではないため
聞く人がいないのです。といってMLは恥ずかしくて聞けないTT)
これからもよろしくです。。。
0029デフォルトの名無しさんNGNG
v(^・^)v←決まり事だと思ってた
0030名無し@沢山NGNG
ヌヒよ、おれを頼りにしろ。
0031デフォルトの名無しさんNGNG
VBの質問スレはv(^・^)bなのになんでここはc(^・^)c
とかc(+・+)cじゃないの?
0032デフォルトの名無しさんNGNG
>>27
無事通りました。この方法でいってみたいと思います。
ありがとうございました。
0033c(^p^)pNGNG
0034デフォルトの名無しさんNGNG
c(pp^)
0035デフォルトの名無しさんNGNG
STLつかうと一気に実行ファイルサイズが10倍に?!
0036デフォルトの名無しさんNGNG
>>35
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0037デフォルトの名無しさんNGNG
>>36
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0038デフォルトの名無しさんNGNG
あれ、このやりとりどっかで見たような気が……deja vu?
0039デフォルトの名無しさんNGNG
>>38
恒例のやりとりですね。
0040デフォルトの名無しさんNGNG
ヌヒよ、STLぐらいでガタガタいってたら
boostはどうすんだよ。
0041デフォルトの名無しさんNGNG
>>40
ドタドタする
0042デフォルトの名無しさんNGNG
VC7.1にしたらwarning C4244が大量に出てきて鬱だよママン…
0043デフォルトの名無しさんNGNG
>>39
ああ。なんか前にもあったな。
0044デフォルトの名無しさんNGNG
>>42
すげえ。VC7.1にしといてwarning C4244が大量に出てきたとかいってるよ。この人。
0045デフォルトの名無しさんNGNG
>>44
そんな事言われても出たもんは出たんだよヽ(`Д´)ノ ウワァァァン
まぁあんまりその辺気にせずにVC6を使ってた漏れが悪いが…
0046デフォルトの名無しさんNGNG
http://me.bird.to/hakoniwa/files/hakowai020.lzh

一応C++
0047名無し@沢林NGNG
しまった。デジャブーにのりおくれた・・・
0048名無し@沢森NGNG
沢○が大量発生だな。おい。
0049デフォルトの名無しさんNGNG
僕の名前はエンポリオです。
0050デフォルトの名無しさんNGNG
次作「ラン・タイム・エラー」でお会いしましょう。(飛呂彦)
0051デフォルトの名無しさんNGNG
          Z
_____(-∀- )__
_│_│_│_│_│
│_│_│_│_│_          ポイント♪
_│_│_│_│_│
│_│_│_│_│_     (・∀・ )⌒ヽ⌒ヽ⌒ヽ


           
          
_____Σ(-∀・ )_
_│_│_│_│_│
│_│_│_│_│_        ポイントカード オモチデスカ?
_│_│_│_│_│
│_│_│_│_│_    (・∀・ )⌒ヽ⌒ヽ⌒ヽ



_____Σ(;・Д・)_
_│_│_│_│_│
│_│_│_│_│_        
_│_│_│_│_│        ・・・ポイント10バイ!
│_│_│_│_│_    □⊂(・∀・ )
0052デフォルトの名無しさんNGNG
糞スレ化の危機により緊急age
質問カモ〜ン
0053デフォルトの名無しさんNGNG
質問:C++って死滅しちゃうの?
0054デフォルトの名無しさんNGNG
じゃあ俺が問題を出してやる

0<x<2などの複数回比較を可能にするクラスmulticomparisonと
そのヘルパ関数mcompを作成しろ。これによって次の例が可能になる
0<mcomp(x)<3、mcomp(x)==y==z
0055デフォルトの名無しさんNGNG
>>54
http://pc2.2ch.net/test/read.cgi/tech/1047970129/814-825
0056デフォルトの名無しさんNGNG
>>54
http://www.trickpalace.net/cxx/dagger/tips.h
0057デフォルトの名無しさんNGNG
あったよ♪

http://akipon.free-city.net/page003.html

http://endou.kir.jp/betu/linkvp/linkvp.html
0058デフォルトの名無しさんNGNG
いつからかわからんけど、ム板つまんなくなったよね。
0059デフォルトの名無しさんNGNG
>>58
スレタイを10000回復唱汁。
0060デフォルトの名無しさんNGNG
ちと教えてたもー。
基本クラスAとその派生クラスBがあったとします。
A* p = new B;
delete p;
という風に書きたい場合はAのデストラクタを仮想関数にするのでいいのでしょうか?
0061デフォルトの名無しさんNGNG
>>60
Yes
0062デフォルトの名無しさんNGNG
>>60
その通り。

というか、特殊な事情がない限り
デストラクタは仮想関数にしておいた方が無難。

特殊な事情ってのは、
派生クラスを作る予定が全くない、
よほどパフォーマンスやデータサイズが気になる、
とか。
006360NGNG
>>61-62
ありが�d。

勉強になりました。
派生する価値のあるクラスが書けるかどうかはおいておくとしてとりあえず癖につけておきます。
0064デフォルトの名無しさんNGNG
>>60
そうしないと未定義
0065デフォルトの名無しさんNGNG
>>60
Aのサイズでヒープを開放しようとするのでヒープ領域が破壊される
ヨカーン。
0066デフォルトの名無しさんNGNG
>>62
えーやだなー
0067デフォルトの名無しさんNGNG
質問お願いします。

あるデータに関するクラスAがあり、
そのクラスのオブジェクトを集約リストとして持っているクラスBが別にあります。
クラスAのオブジェクトは、全てそのリストで管理されています。
クラスBは他に妥当なクラスがないという消極的な理由から、クラスAのリストを保持してます。

そこでお尋ねしたいのですが、このリストに対する操作(ソートや全検索など)を
実装する場合、それをクラスBのメンバ関数とするのと、クラスAの静的メンバ関数に
するの、どちらが妥当でしょうか?
0068デフォルトの名無しさんNGNG
えっと別スレで聞いたのですが説明なしで自己満足で終わられたみ
たいなのでこのスレに投げます。

SYOTI_F( char * ) test_time SYORI_P(( const time_t *tp, char *buf ));

とGCCで書いてあるヘッダをC++Builderでコンパイルすると
[C++ エラー] test.h(38): E2293 ) が必要

となるのですがこれはSYOTI_F( char * ) を返り値とした関数
の宣言と考えて良いでしょうか?
0069デフォルトの名無しさんNGNG
>>67
そのリストがどこに所属しているかによる。

クラスAの設計の一部として(クラスAが成り立つために必須)存在しているのならクラスAのメンバにすべき。

それとも、クラスAは単独で存在できるけど、たまたま今回のプログラムではそれをリスト上で管理しているのならクラスBのようなコレクションクラスのメンバにすべき。
0070デフォルトの名無しさんNGNG
>>68
おそらくSYOTI_FとSYORI_Pはマクロだと思うが、それが定義されていないためのエラーってことはない?
0071デフォルトの名無しさんNGNG
>>68
× SYOTI_F
○ SYORI_F
のタイプミスが原因に 1000 ガバス。
007267NGNG
>>69
レスありがとうございます。なるほど、
リストというデータの帰属を問えば良いのですね。

今回の私のケースは、69さんの二行目に反するようです。
(二行目の様にリストの内包が必須なクラスを、今ちょっと想像出来なくて、少しだけ不安ですが)

ですのでBのメンバにしようと思います。御陰で吹っ切れました。重ね重ね感謝です。
0073デフォルトの名無しさんNGNG
>>70
定義って#define以外に?
0074デフォルトの名無しさんNGNG
>>68
こっちにも書いとく。

>えっと別スレで聞いたのですが説明なしで自己満足で終わられたみ
>たいなのでこのスレに投げます。

回答してくれる人をなんだと思ってるんだ?
おまえの質問に答えてやるためだけに常駐してるとでも思ってるの?
0075デフォルトの名無しさんNGNG
>>74
意味の通らないことを散々書いておいて、突然はたと居なくなるのが
自己満足以外のなんだというんですか?w
質問者に礼儀が必要なのはもちろんですが、回答者にだって必要かと..ww
0076デフォルトの名無しさんNGNG
C++には、VBのStrConv関数のようにSHIFT-JISをUnicodeに変換する関数はないのでしょうか?
以下のような関数を自作できないこともないとは思いますが。
if((fi=fopen(source,"rb"))!=NULL)
if((fo=fopen(target,"wb"))!=NULL){
printf("Start conversion\n");
fputc(255,fo);
fputc(254,fo);
while((c = fgetc(fi))!=EOF){
後略
0077デフォルトの名無しさんNGNG
分かっている事ばかり答えてもらってもしかたなか(-.-)
分かっている事ばかり答えてもらってもしかたなか(-.-)
分かっている事ばかり答えてもらってもしかたなか(-.-)
0078デフォルトの名無しさんNGNG
俺は68がまったく意味不明なんだが
0079デフォルトの名無しさんNGNG
相互リンク
http://pc2.2ch.net/test/read.cgi/tech/1054280736/491-
0080デフォルトの名無しさんNGNG
>>75
あのね質問に全部答えても解答がでてないの〜^^;
0081デフォルトの名無しさんNGNG
ウンコ野郎にマジレスしちまった・・・鬱

>>79
被害の拡大を防いでくれてありがとう
0082デフォルトの名無しさんNGNG
>>75
>突然はたと居なくなるのが

あたりまえ。おまえみたいに暇な人ばかりじゃない。
0083デフォルトの名無しさんNGNG
>>80
みすだ
0084デフォルトの名無しさんNGNG
>>81
答える事ができないのに偉そうなのがむかつく
0085デフォルトの名無しさんNGNG
>>81
分からないのに偉そうにあれを調べろこれを調べろ
って時間の無駄〜他の人にしないで下さいね
0086デフォルトの名無しさんNGNG
>>76
標準C++には無いよ
ライブラリかOSの機能をつかうべし
0087デフォルトの名無しさんNGNG
>>86
行いたい機能から関数を逆にたどるのがむずかしいのですが、
Borland C++ Compiler 5.5のライブラリの中にはSHIFT-JISをUnicodeに変換する関数などはないのでしょうか?
0088デフォルトの名無しさんNGNG
>>76
mbstowcs 関数というのがある。
ヘッダファイルは cstdlib 。
ただし、Shift-JIS を使っている OS に限る。
0089デフォルトの名無しさんNGNG
>>88
wchar_tがうにコードとは限らな(略
0090デフォルトの名無しさんNGNG
>>88
mbstowcs()とwcstombs()がありました。ありがとうございました。
0091デフォルトの名無しさんNGNG
Cを始めて勉強するのにお勧めな本はありますか?
0092デフォルトの名無しさんNGNG

昔、私がTemplateすれに貼り付けたもの。
C++ でワイド文字をマルチバイト文字列に変換

std::localeloc( "japanese" );
std::locale::global( loc );

std::wstring source( L"(・∀・)" );
std::string result( source.size()*2, char() );
const std::ctype< wchar_t >& ct = std::use_facet< std::ctype<wchar_t> >( loc );
ct.narrow( &*source.begin(),&*source.end(),'?',&result[0]);

std::wcout << L"wide : " << source << std::endl;
std::cout << "narrow : " << result << std::endl;

結果
wide  : (・∀・)
narrow : (・∀・)

マルチバイト文字列からワイド文字列へは、

std::string source( "(・∀・)" );
std::wstring result( source.size(), wchar_t() );
const std::ctype< wchar_t >& ct = std::use_facet< std::ctype<wchar_t> >( loc );
ct.widen( &*source.begin(),&*source.end(),&result[0]);

VCで確認済みだが、他の環境(UNIXとか)では知らん
009392NGNG
こぴぺミス。

×std::localeloc("japanese");
○std::locale loc("japanese");

他にもミスあるかも…
0094デフォルトの名無しさんNGNG
>>92
VC++7.0 では期待通り動くけど、
VC++7.1 じゃ表示がおかしくなるね。

なんか違うのかな?
0095デフォルトの名無しさんNGNG
前スレ>>944
http://pc2.2ch.net/test/read.cgi/tech/1055162298/944
亀レスだけど

typedef Typelist<class1,Typelist<class2,Typelist<class3,NullType> > > ClassList;

class Base{
public:
    virtual int GetID()=0;
    virtual ~Base(){}
};
template <typename classname>
class BaseImpl:Base{
    int GetID(){
        return IndexOf<classname>::value;
    }
};
class class1:public BaseImpl<class1>{
};
0096デフォルトの名無しさんNGNG

class AbortType{
public:
    AbortType(){abort();}
};
class Factory{
public:
    Base * Create(int ID){
        switch(ID){
        case 0:return new TypeAtNonStrict<ClassList,0,AbortType>::Result;
        case 1:return new TypeAtNonStrict<ClassList,1,AbortType>::Result;
        case 2:return new TypeAtNonStrict<ClassList,2,AbortType>::Result;
        //...
        }
        //static Base * (*Funcptr[ClassList])()={TypeAtNonStrict<ClassList,0,AbortType>::Result::operator new(),
        //TypeAtNonStrict<ClassList,1,AbortType>::Result::operator new()};
        abort();
    };
};
Factoryはperlとか使って出力しておく。
templateスレへ行けとか言われそうな気もするけど思いついたので。
typelistとかTypeAtとかも書くと長くなりそうなので省略
0097デフォルトの名無しさんNGNG
>68
そう考えてよい。以上。
0098デフォルトの名無しさんNGNG
UTF8でファイルの読み書きしたい場合、C++標準ライブラリとかありますか?
0099デフォルトの名無しさんNGNG
標準には存在しない。
0100デフォルトの名無しさんNGNG
>>96
そういうときこそpreprosessor-metaprogrammingだ
0101デフォルトの名無しさんNGNG
>>98
あつかっている文字が始めから最後までUTF8なら
通常の読み書きの関数をそのまま使えば済む話だけど、
具体的にどういうことがしたいの?
■ このスレッドは過去ログ倉庫に格納されています