[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/15 20:46 / Filesize : 200 KB / Number-of Response : 834
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.35【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 21:36:23 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.34【環境依存OK】
pc10.2ch.net/test/read.cgi/tech/1169039760/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

415 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:11:45 ]
istream_iteratorでfor_eachがC++流

416 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:14:21 ]
高機能さを求めるならboost::tokenizerだと思う。

417 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:17:43 ]
>>415
ただのistream_iteratorだとtokenじゃなくてcharが返らんか?

418 名前:417 mailto:sage [2007/03/10(土) 23:24:39 ]
ごめん。超アホなこと書いた。
でも、これってデリミタ指定できるか?

419 名前:412 mailto:sage [2007/03/11(日) 00:10:10 ]
レス感謝。
いただいたヒントを元に、更に調べてみようと思います。

それにしても、strtok()ってクセ強いですよねぇ……。



420 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 00:23:25 ]
>>412
ちゃんとしたベンダーならマルチスレッドな環境で同時に使っても
問題が起きないことを保証してくれてるもんだぞ>strtok()
まぁ、同じスレッドから複数の処理をやっちゃうと確実にアウトだけど。

421 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 00:30:41 ]
boost::tokenizerでは、デリミタを残す/捨てる、空トークンを残す/捨てる
を選べるのが良いな。

strtok()には色々問題があるが、デリミタも空トークンも捨てる仕様なので、
これでは困ることもある。
シェルのような感じで空白文字を区切りに使うときはこれでよいのだが。

環境によってはBSD由来のstrsep()という関数が使える場合もある。
こっちは予めリエントラントで、デリミタを捨てて空トークンを残す仕様だ。
ただし、コピーを避けるために元のバッファに破壊的に動作するのは同じ。

Cなら単にsscanf()を使うのも悪くない選択肢。

422 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 00:32:24 ]
>>420
MSVC++の場合はhidden dataをTLSに隠す仕様だから問題ない。
が、リエントラント版strtok()はstrtok_r()のような別名で提供している
実装も多いよ。
こういうことがあるから、移植性を考えてもstrtok()の使用は
好ましいとは言えない。

423 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 01:58:54 ]
質問です。

/* test.c */
#include <stdio.h>
#include <math.h>

int main(void) {
double i = 2;
double foo;

printf("%d\n", (int)pow(10, 2)); /* 結果 100 */
printf("%d\n", (int)pow(10, i)); /* 結果 99 */
printf("%f\n", pow(10, i)); /* 結果 100.000000 */
foo = pow(10, i);
printf("%d\n", (int)foo); /* 結果 100 */

return 0;
}

このソースをMinGW32-gccでコンパイル・実行すると、結果がコメントのようになります。
(bccだと、100、100、100.000000、100 になるのですが。)
これはコンパイラの仕様なのか、それともバグなのか、どちらでしょうか?




424 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 03:01:43 ]
int main(void) {
double i = 2;
double foo;
foo = pow(10, i) - 100.0;
printf("%e\n", foo);
foo = pow(10, i);
printf("%e\n", foo);
}

多分情報落ちしてるだけだと思う。

425 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:03:40 ]
基底クラスの代入演算子をオーバーロードしてメンバをコピーするようにしたのですが
派生クラスでも同様に代入演算子をオーバーロードした時に基底クラスのメンバをコピーするためには
派生クラスのオーバーロード内に基底クラスのメンバをコピーするような処理を自前で用意しないといけないのでしょうか?



426 名前:425 [2007/03/11(日) 13:12:55 ]
というのも、基底クラスと派生クラスでコピーコンストラクタを用意していると
派生クラスのコピーコンストラクタで自動的に基底クラスのコピーコンストラクタが
呼ばれているように見えましたので。。。

427 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:17:40 ]
こんな感じで基底クラスのoperaotr =を呼べばいい。
class Base
{
public:
  Base& operator =(const Base&);
};

class Derived : public Base
{
public:
  Derived& operator =(const Derived&);
};

Derived& Derived::operator =(cosnt Derived& d)
{
  Base::operator =(d);
  //以下Drived分のコピー処理
}

428 名前:425 [2007/03/11(日) 13:46:43 ]
>>427

なるほど。基底クラスを指定して呼び出せばよかったのですね。
基本的なことだったのかもしれませんがとても勉強になりました。



429 名前:デフォルトの名無しさん [2007/03/11(日) 15:08:05 ]
質問があります。

class Hoge { … }

vector<Hoge> HogeArray;

文法としてこんなことできますか?

430 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:13:14 ]
できるよ

431 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:43:21 ]
出来ないな。セミコロンがない。

432 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:39:16 ]
絶対言うやつがいると思った

433 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:47:46 ]
揚げ足取りのレベルで頭の程度が知れるのをまったく怖れないのは
ある意味度胸かも



434 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:58:21 ]
しかし、>>431的な言い方は問題あるにしても、
言ってあげるべきモノではあると思う。
慣れないうちはつけ忘れ多いだろうし。

435 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:59:37 ]
まあ文法ならtemplateがらみでもない限りコンパイル一発で間違いはすぐわかるんだけどな

436 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:25:54 ]
それでも文法の間違いがわからない人が来るスレだと思ってた

437 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:38:43 ]
>>435
ヒント:ココは初心者スレ

438 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:43:57 ]
ソースとエラー/警告を載せれば
もれなく>>435が全て解決してくれるスレになりました。

439 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:47:23 ]
>ソースとエラー/警告を載せれば
初心者はどれを載せたらいいのかもわからんし難しいなw

440 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:00:00 ]
いやでも「コンパイルエラーの解決」なんて話題は、
基本的には、初心者どころか入門者(入門書を読み始めたばかり)というレベルだけだろ。
それを解決するもの簡単だし。
もちろん、規格の細部や処理系異存かなんて話はあるけどさ。

本当に時間がかかる「バグ」というのは
「コンパイルは通るけど意図通りに動きません」なんだから。
もちろん、極稀なコンパイラのバグにぶつからない限り
「ソースの通りに動いている」わけだけど。

441 名前:429 mailto:sage [2007/03/12(月) 00:31:30 ]
すいません。

431さんの言うとうりセミコロンの付け忘れでした。

442 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 01:44:48 ]
>>431のエスパー能力に敬意を表する!

443 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 01:54:30 ]
これはもうメイクミラクルやね



444 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 06:03:42 ]
いや>>441は偽物だ。

三点リーダを>>429のように使えるはずないもん!

445 名前:デフォルトの名無しさん [2007/03/12(月) 11:07:51 ]
newとdeleteを頻繁に使うのはよくないですか?

446 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 11:09:38 ]
newは別にいいけど、deleteは例外安全や面倒くささを考慮して、
std::auto_ptrなど何らかのスマートポインタに入れておくべき。

447 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:47:03 ]
pを辿って99から1までを表示するプログラムです。

実行すると途中のcount=35あたりまで表示されてエラーが起こります。
メッセージ:「ハンドルされていない例外は TEST.exe にあります:0xC0000005: Access Violation。」

これは何故起こるのでしょうか。解決法もできれば教えてください。お願いします。
struct Test
{ int x;
 Test *p;
};
int main()
{ int i;
 std::vector<Test> v; //xに1〜99を順に入れていく。pには一つ前のポインタを入れる
 Test b;

 b.p = NULL;
 v.push_back(b);

 for (i=1;i<100;i++) { //
 b.x = i;
 b.p = &v[i-1];  //
 v.push_back(b);
 }

 Test *c;
 c = &v[v.size()-1];

 int count = 0;
 while ( c->p != NULL )  {      // NULLが出るまでpを辿る
  printf("%d: %d\n",count++,c->x);
  c = c->p;
 }                                                 長くなってすいません。

448 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:02:59 ]
push_backしていってvectorのサイズがでかくなったときにvector内部で再割り当てが起こってる。
なので&v[i-1]は途中から不正なポインタを指す。
なので本当は&v[i-1]が不変なのを期待しちゃダメ。

↓こうやって最初に100確保しておけば再割り当てが起こらないだろうから大丈夫。

int main()
{
int i;
std::vector<Test> v(100);
Test b;

b.p = NULL;
v[0] = b;

for (i=1;i<100;i++) {
b.x = i;
b.p = &v[i-1];
v[i] = b;
}

Test *c;
c = &v[v.size()-1];

int count = 0;
while ( c->p != NULL ) {
printf("%d: %d\n",count++,c->x);
c = c->p;
}
}

449 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:04:21 ]
あ、でも同僚がこんなコード打ったら殴る

450 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:59:18 ]
宣言した後に余裕を持ってNULLの要素を追加してやらないと駄目なのか
で、不足してきたらまた余裕を持ってNULLと末端の要素を
実際に割り当てた時は割り当てた所に書き込むのと同時に、末端となる位置も変えてやらにゃならん
こんな事してたらvectorの意味無いじゃん

451 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:13:42 ]
空でないディレクトリをまるごと
削除する関数ってあるでしょうか。
C++Builderです。

452 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:18:30 ]
C++Builderは知らんな。
Win32 APIにはSHFileOperationがあるが。

453 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:24:20 ]
system("rmdir /S /Q C:\");



454 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:30:34 ]
>>448
やはり場所が変わっていたのですか・・・
vectorを使うべきじゃなかったようですね
ありがとうございました。

455 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:44:58 ]
>>454
イレテータ使え

456 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:51:32 ]
つーかlist<int>使え

457 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:54:06 ]
>>452
SHFileOperationですか。
見てみたんですが、引数がたくさんあって難しそうですね。(汗
簡単な解説と使用例どこかにないか探して見ます。

>>453
おおお。今はこの方法で行きたいと思います。

ありがとうございました。

458 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:26:01 ]
すいませんが初心者の質問です。
あるクラス内でnewしたメンバ変数への参照かポインタを返す場合、
クラスの外側からdeleteさせないようにするにはどうすればいいんでしょうか?
constつければコンパイルエラーになるもんだと思ってたんですが、
試してみたらダメでした。

class moge;//詳細は略
class hoge{
 moge* mp;
 public:
 //略
 const moge * const getMp(){return mp;};
 const moge& getMRef(){return *mp};
}

void f(hoge& h){
 const moge * const mp = h.getMp();
 delete mp; //コンパイルエラーになってほしい
}

void g(hoge& h){
 const int& i = h.getRef();
 delete &i; //コンパイルエラーになってほしい
}

459 名前:458 mailto:sage [2007/03/12(月) 19:29:44 ]
すいません。g()がメチャクチャになってました。
void g(hoge& h){
 const moge& m = h.getMRef();
 delete &m;//コンパイルエラーになってほしい
}

が正しいですね。

460 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:32:01 ]
デストラクタをprivateへ移行

461 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:36:53 ]
>>455
std::vectorのイテレータは、
基のvectorの要素数が変わったら無効になってよいとなっているので、
何の解決にもならない。

462 名前:458 mailto:sage [2007/03/12(月) 20:02:43 ]
>>460 即レスありがとうございます。
確かに質問内容の答えにはなってるんですが、ちょっと説明不足でした。
class hogeのメンバ関数内でmogeをnewしていて、hogeのデストラクタで
deleteしたいんです。
mogeのデストラクタをprivateにするとhogeの破棄時にdeleteできずにメモリが
リークしてしまうという問題が出てしまいますよね。

463 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:16:05 ]
だったら、友達にでもしろよ。



464 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:21:16 ]
所有権が移動しないスマートポインタ使えば?

465 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:29:52 ]
クラスを1階層増やせばいいんでないの。
class IMoge{ protected:~IMoge(){}};
class moge : public IMoge{public:~moge(){} };
class hoge{ moge *mp;
   public : IMoge &getmogeref(){ return *mp; }
   ~hoge(){delete mp;} };

466 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:36:14 ]
そうだ、外側からdeleteしない設計にすればいいんだ!
うわ俺マジ頭良い^^

467 名前:458 mailto:sage [2007/03/12(月) 20:39:01 ]
>>463-465
どうもありがとうございます。
たぶん友達にするのが一番個人的な要求に合っていると思います。
というか、こんな基本的なことも浮かばないあたり、ダメダメですね。


468 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:04:47 ]
時間の都合だと思うが、>466のスルーされっぷりに噴いた。
いや、たぶん突っ込まれてもそれはそれで困るんだろうけど。

469 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:37:36 ]
以下のようなプログラムを実行すると
error LNK2019: 未解決の外部シンボル "public: void __thiscall C01::TEST(void)"〜
とでます。
inlineをはずれば通るのですが、どうしてもinlineを付けたいです。
解決方法御願いします。

//00.cpp
#include "01.h"
void main()
{
C01 c;
c.TEST();
}

//01.h
class C01
{
public:
void TEST();
};

//01.cpp
inline
void C01::TEST()
{
}

470 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:48:32 ]
01.hにコンストラクタの定義を書く。

471 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:49:28 ]
ヘッダに書けよ

472 名前:469 mailto:sage [2007/03/13(火) 21:04:32 ]
>>470
コンストラクタの有無は関係有りませんでした。

>>471
TEST()関数をヘッダに書いたら通りました。
有り難うございます。
ちなみに.cppの方に書く事は出来ないのでしょうか?

473 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:06:38 ]
cppファイルに定義を書くならinline付けるなよ。



474 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:07:28 ]
基本的に他のファイルから可視じゃないとinline展開はできない
リンカがやってくれたりもする場合もあるらしいけど

475 名前:469 mailto:sage [2007/03/13(火) 21:20:58 ]
>>473-474
なるほど、有り難うございます。

476 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:34:14 ]
OS RHEL V4.3

gcc version 3.4.6

コンパイルオプション
-D_XOPEN_SOURCE=600

警告: 引数 2 個の `read' を渡しますにより、ポインタの示す型か
らの修飾子が切り捨てられます。

read()を利用しているソースをコンパイルしようとすると上記のような
警告が出ます。なぜこんな警告が出るのかさっぱりです。

何かよい解決方法をご存知の方はおられませんか?

477 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:09:42 ]
ちょっとそのreadの周辺を晒してくれまいか?

478 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:27:36 ]
>>476
警告:readに渡す第二引き数のポインタ修飾子が剥がされます。

read()にconst char *渡したりしていない?

479 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:35:35 ]
引数2コのreadってなんだ。普通readは引数3コじゃないか。

480 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:44:53 ]
>>479
gccのエラーメッセージの日本語訳が無茶苦茶なの。正解は>478。

481 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:23:49 ]
for(int i=0; i<3; i++){
handle[i]=_beginthread(...);
}

//handle[0],handle[1],handle[2]どれから、終わるのかわかりません
for(int i=0; i<3; i++){
WaitForSingleObject( handle[i] , INFINITE );
}

3つスレッドを立ち上げましたが、後処理の方法で困っております。
上記のようにすると、WaitForSingleObjectで、
永遠に待つ状態になってしまいます。
どうするときれいに、後処理できるでしょうか?
よろしくお願いします。

482 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:25:03 ]
WaitForMultipleObject は?

483 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:44:15 ]
あと_beginthreadex使って自分でハンドルを閉じるようにしろ。



484 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:50:34 ]
っと、sがつくね、そういえば WaitForMultipleObjects

485 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:17:27 ]
C++のライブラリにファイルを扱うためのクラスはありませんか?

486 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:18:30 ]
std::fstreamのことを言っているのか?

487 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:27:52 ]
本当にありがとうございます

488 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:11:28 ]
ワラt

489 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 10:16:57 ]
>>482
レスありがとうございます。
for (int i=0; i<3; i++){
while(WaitForMultipleObjects(3, handle,TRUE, 1000) == WAIT_TIMEOUT){
OutputDebugString("タイムアウトしました");
}
OutputDebugString("タイムアウト以外デス");
}
これで、きれいに後処理できました。

>>483
_beginthreadは、CloseHandle()しなくても、自動で閉じてるかもしれないです。
ネットで検索すると、自動で閉じてるみたいなこと書いてありました。
試しにCloseHandle()してみると、エラーでました。
環境は、C++Builderですが、_beginthreadexを使用したほうが、良いのでしょうか?

490 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 13:10:23 ]
環境はWindowsです。
URLデコードについて教えてください。
ttp://work.tkensaku.com/tool/urldec.html
こちらのサイトなど、インターネットに落ちているものを利用して
デコードしてみたのですが、きちんとデコードできるときとできないときがあります。

例えば、
1.「%82%A0%82%A0%82%A0」->「あああ」
2.「%E6%96%B0%E8%A6%8F%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88.txt」->「譁ー隕上ユ繧ュ繧ケ繝・繝峨く繝・繝。繝ウ繝・txt」

1は、うまくいきましたが2が文字化けしてしまいました。
ttp://www.taka-k.com/pg.html
こちらの関数で、確認しましたが同様に「譁ー隕上ユ繧ュ繧ケ繝・繝峨く繝・繝。繝ウ繝・txt」と出力されました。

ttp://www.tagindex.com/tool/url.htmlで、2を確認すると「新規テキスト ドキュメント.txt」と正常に表示されました。
「新規テキスト ドキュメント.txt」->「%E6%96%B0%E8%A6%8F%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88.txt」
のエンコードは正常なのかもしれません。
何が原因なのかわからないのですが、どうすれば常に正常にデコードできるでしょうか。
よろしくお願いします。

491 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 13:13:11 ]
それはもしかして文字コードの違いなのでは?

492 名前:デフォルトの名無しさん [2007/03/15(木) 13:27:10 ]
質問です。
templateを使っているのですが、
template<class T>とした時、このTが「IHogeを継承したクラスかどうか」を判断する方法はないでしょうか?

if (isIHogesChild(T))
{
 IHogeを継承しているときの処理.
}
else
{
 それ意外の時の処理.
}
とやりたいのです。

493 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:14:16 ]
>>490
1はCP932、2はUTF-8。UTF-8をCP932環境で表示しようとするから文字化けしているだけ。



494 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:48:28 ]
>>491
>>493
>1はCP932、2はUTF-8。UTF-8をCP932環境で表示しようとするから文字化けしているだけ。
すごい。どうやって2はUTF-8とわかるのでしょうか。
「%E6%96・・・」を眺めているとわかるのですか?


495 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:51:43 ]
UTF-8は文字の先頭バイトの頭のビットが立ってたら2番目も必ず立つからな
そして、3バイト文字なら1110 で始まるので必ずEで始まる。

496 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:53:50 ]
眺めていても判るが、念の為にiconv -f CP932 -t UTF-8|od -t x1を実行して「新規テキスト ドキュメント」をペーストして見た。
で、予想通りこんな出力が得られたわけだ。
--
0000000 e6 96 b0 e8 a6 8f e3 83 86 e3 82 ad e3 82 b9 e3
0000020 83 88 20 e3 83 89 e3 82 ad e3 83 a5 e3 83 a1 e3
0000040 83 b3 e3 83 88 0a
0000046


497 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 15:31:49 ]
>>492
boost::is_base_of<IHoge, T>

498 名前:デフォルトの名無しさん [2007/03/15(木) 16:49:31 ]
>>492
コンパイル時に分かる事を実行時に判定するのは非効率だよ。

非効率どころかコンパイルが通らなくなることも多い。

499 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:55:59 ]
実行時に動的にクラスを作るような構造は駄目ということか

500 名前:デフォルトの名無しさん [2007/03/15(木) 17:07:09 ]
>499
誰もそんなこと言ってないが

501 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:08:16 ]
sage忘れてた…orz

502 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:08:05 ]
>>498
実用的なコンパイラなら最適化でif文をさっくりと消してくれる。

503 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:52:02 ]
C++でVisual studioの質問なんですけど、例えばabcdeをstringで引っ張ってきて
その文字数を整数に直す(この場合だと5)方法ってありますか?
別にstringを使わなくてもいいんですが・・・・



504 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:53:58 ]
size()
length()

505 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:55:49 ]
文字数を整数に直すの意味がわからん
整数じゃないのかよ元は

506 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:59:47 ]
ああ、lengthを忘れてました。
どうもありがとう。

507 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:00:14 ]
わからんぞ。>>503の世界ではマイナスかもしれんし、はたまた虚数かもしれん



508 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:05:31 ]
平行世界の住人でもOK
ただしその場合、質問者は必ず、出身地を書きましょう

509 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:28:27 ]
文字数を整数に直すっていうか、文字数を数えたかったんです。

510 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:56:27 ]
C++ VisualStudioで質問させていただきます

unsigned char * と System::String^ (#include<string.h>)
この二つをお互い変換する方法を教えていただきたいです

511 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:02:19 ]
support.microsoft.com/kb/311259/ja
マネージドC++向けの記事だが、たとえC++/CLIでも構文が違うだけで中身は通用する。

512 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:05:37 ]
またC++の質問なんですが、
abcde
という文字列があるとして、左から4番目・dを取り出すのはどうすればよいですか?

513 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:11:08 ]
c=s[3];



514 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:11:42 ]
ちゃんと出身地を明記しような。

515 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:14:33 ]
>>513
いまいちわからないのですが・・・

>>514
出身地?
一応東京ですけど・・・

もう少し詳しく教えて頂けませんか?
困ってるんです。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef