【初心者歓迎】C/C++室 Ver.60【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/10/15(水) 17:06:26ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.59【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1220708712/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
0002デフォルトの名無しさん
2008/10/15(水) 17:07:200003デフォルトの名無しさん
2008/10/15(水) 17:09:030004デフォルトの名無しさん
2008/10/15(水) 17:12:51class x
{
public:
methodA();
methodB();
private:
int x;
int y;
}
みたいなクラスがあって
methodA()
{
// 初期化
x = ...
y = ...
}
methodB()
{
// x、yを使って作業をする
}
といった感じで処理をしているのですが、変数xとyが
methodBに入った瞬間に壊れてしまいます。
一瞬、メモリの越境破壊かな? と思ってデバッガの変数ウォッチで追いかけてみたのですが
デバッガで見る分には確実にmethodBに入る瞬間に壊れています。
値が16進の 0x303030 固定なので人為的なものを感じるのですが、
何か原因の可能性として思いつくようなものはありますでしょうか?
0005デフォルトの名無しさん
2008/10/15(水) 17:14:410006デフォルトの名無しさん
2008/10/15(水) 17:18:59例えばlispで言うnsclisperみたいな物があればいいです。
0007デフォルトの名無しさん
2008/10/15(水) 17:27:41キャスト無しでもキャストしてもエラー出ます。 coutの拡張は難しいです。
なんとかなりますか?
typedef basic_string<char, char_traits<char>, userallocator <char> > u_string;
int main() {
u_string a="abcdef";
// cout<<(char*)a;
}
0008デフォルトの名無しさん
2008/10/15(水) 17:33:12u_string a="abcdef";
cout<<&a[0];
でもデータが連続していて最後が0になってないと駄目なんですが。
不連続でも可能な方法ありますか
0009デフォルトの名無しさん
2008/10/15(水) 17:36:23これならデータが不連続でも良さそうなんですけど
もしデータが100Mとか貯まっていたらメモリにコピーを用意するのに
それだけ悔いますよね。直接ファイルに書き出したい場合に方法無いですか?
0010デフォルトの名無しさん
2008/10/15(水) 17:38:0000114
2008/10/15(水) 17:50:07自分で文字バッファを'0'でクリアしてたのが越境してました
0012デフォルトの名無しさん
2008/10/15(水) 17:55:59> 確実にmethodBに入る瞬間に壊れています
これが違ってたこと?
思いこみって怖いねXD
0013デフォルトの名無しさん
2008/10/15(水) 19:54:51クラスのプライベートで
typedef struct {
char Question[256]; // 問題
char Select[256]; // 選択肢
int Answer; // 答え
} Question, *Quiz;
};
を定義して
デフォルトコンストラクタで
Quiz = new Question[MAX_QUIZ];
とやったのですが : error C2513: 'QuizClass::Question *' : 指定された型は、識別子の名前を指定せずに宣言されています
と出てしまいます
どうすればメモリを確保できますか?
ヒントだけでもいいのでよろしくお願いします。
0014デフォルトの名無しさん
2008/10/15(水) 20:02:190015デフォルトの名無しさん
2008/10/15(水) 20:29:030016デフォルトの名無しさん
2008/10/15(水) 21:00:540017デフォルトの名無しさん
2008/10/15(水) 21:30:02void kansu(unsigned a){
int ans[a];
(中略)
}
main(){
kansu(10);
(中略)
}
上記のように、関数の引数を配列の個数として受け取るプログラムを作っているのですが、
配列を宣言する行で「定数でないものがある」「配列のサイズを整数定数に評価できません」といわれます。
はじめは自分のプログラムが間違っていると思っていたのですが、同じ課題(なので上記構成を含みます)を
やっていた友人の完成ファイルをもらって自分のPCでコンパイルしてみると、これも通りません。
でも友人は確かに学校のPCでコンパイルに成功していました。
自分のコンパイラに問題があるのかと、LightCとLSI C-86で試してみましたが変化ありません。
何がいけないのでしょうか? 初歩的な問題だったら申し訳ありません。
ご教授よろしくお願いします。
0018デフォルトの名無しさん
2008/10/15(水) 21:45:57実行時に決まる値を使ってでのスタック上での配列宣言はできない。
それだけの話。
0019デフォルトの名無しさん
2008/10/15(水) 21:52:16何処がおかしいのでしょうか?
#include<stdio.h>
int daikei(int,int,int);//daikei関数のプロトタイプ宣言
int main(void)
{
printf("台形の面積を求めます。\"上底\" \"下底\" \"高さ\"の順に数値を3つ入力してください。"
"なお、数値はカンマ\",\"で区切ってください。:\n");
int ue,shita,takasa;
scanf("%d,%d,%d",&ue,&shita,&takasa);
printf("上底%dcm、下底%dcm、高さ%dcmの台形の面積は%dcm2です。\n",ue,shita,takasa,daikei(ue,shita,takasa));
return 0;
}
//ここからdaikei関数の部分
int daikei(int ue,int shita,int takasa)
{
int kotae;
kotae = (ue + shita) * takasa / 2;
return kotae;
}
0020デフォルトの名無しさん
2008/10/15(水) 22:07:45int ue,shita,takasa;
を { の下に移動
Cでは変数の宣言はブロック({ })の最初にしないといけない
0021デフォルトの名無しさん
2008/10/15(水) 22:12:00そういうときは
void kansu(unsigned a) {
int *ans = malloc(sizeof(int) * a);
(中略)
free(ans);
}
として、実行時にメモリを確保する
0022デフォルトの名無しさん
2008/10/15(水) 22:12:39動きました。本当に有難うございます。
もっと基本的なことから勉強しなおします。
0023デフォルトの名無しさん
2008/10/15(水) 22:23:1599年仕様が通るまともなコンパイラを使えばOK。
0024デフォルトの名無しさん
2008/10/15(水) 22:46:13あとは、ググルから。
0025デフォルトの名無しさん
2008/10/15(水) 23:19:010026デフォルトの名無しさん
2008/10/15(水) 23:21:380027デフォルトの名無しさん
2008/10/15(水) 23:32:29002817
2008/10/15(水) 23:38:57ありがとうございました!
<stdlib.h>,malloc,freeを足してうまく動きました。
全く考えつかなかったところに原因があったので助かりました。
配列について一つ賢くなれた気がします。他のコンパイラを
手に入れる余裕はないので、もっと勉強して使いこなそうと思います。
回答ありがとうございました。
0029デフォルトの名無しさん
2008/10/16(木) 14:05:45新規プロジェクトを作るたびにいちいちWindowクラスを作成して登録する作業がとても面倒なんですが、
JavaやC#みたいにクラスファイルを作成して、それを他のプロジェクトから使う方法はないんですか?
または、ソースのインポートから新規プロジェクトへそのWindowクラスの書いたファイルをプロジェクトに
取り込む方法とかないですか?
なにぶん、WinAPIは初めてでしてよくわかりません。。ちなみにVC6を使っています。
初心者歓迎で環境依存OKとのことなので、ここで聞きました・・
個人的には、Windowクラス作成の部分を別ファイルに定義しておいて
WinMain関数の有るファイルで、そのWindowクラスを登録すればいいと
思うんですが、ウィンドウプロシージャのCALLBACK関数はどちらのファイルに書いたらいいのか
わかりません。
すみませんが、教えてください。よろしくお願いします。
003029
2008/10/16(木) 14:14:20>いちいちWindowクラスを作成して登録する作業がとても面倒なんですが
これは、長々しいコードを書くのも面倒だしこぴぺするのもスマートじゃないと
おもったんです。ですから、この作業をスマートにやるWindowsプログラム本来の方法を知りたいのです。
よろしくお願いします。
0031デフォルトの名無しさん
2008/10/16(木) 14:31:44無料化されてないよね。しかも取り立てて安くもない。
VC2005EEではダメだったんだろうか。。。
0032デフォルトの名無しさん
2008/10/16(木) 14:35:290033デフォルトの名無しさん
2008/10/16(木) 15:00:10CALLBACK関数も別ファイルに書けばいいと思うよ
WM_PAINTのBeginPaint〜EndPaintの間だけとか
実際に変えたいところだけ主ファイル側の関数を呼べばいいんじゃない
0034デフォルトの名無しさん
2008/10/16(木) 15:08:49プログラムよろしくお願いします。
0035デフォルトの名無しさん
2008/10/16(木) 15:28:20あ、ごめん。
2008まだ入れてないからついうっかりorz
0036デフォルトの名無しさん
2008/10/16(木) 15:37:54C言語の勉強をしてて、他人が作ったソースを眺めていたりするのですが、
その中に
char *skipSpace(char *s)
と言った箇所がったのですが、関数名の前の「*」ってどうゆう意味があるのでしょうか?
これもポインタの一種なのでしょうか?
0037デフォルトの名無しさん
2008/10/16(木) 15:42:140038デフォルトの名無しさん
2008/10/16(木) 15:45:41charのポインタを返す関数だよ
char* skipSpace(char *s)
こうすると分かりやすいかな?
0039デフォルトの名無しさん
2008/10/16(木) 15:51:46なるほど、「char* 関数名」でも「char *関数名」でもどっちでもいいのですね。
ありがとうざいます。
0040デフォルトの名無しさん
2008/10/16(木) 15:57:390041デフォルトの名無しさん
2008/10/16(木) 15:59:110042デフォルトの名無しさん
2008/10/16(木) 15:59:38ポインタのアドレスを比較してるだけだからでは?
0043デフォルトの名無しさん
2008/10/16(木) 16:01:07char* p, q; が、 char *p, *q; かchar *p, q; かわかりずらいからな
0044デフォルトの名無しさん
2008/10/16(木) 16:05:140045デフォルトの名無しさん
2008/10/16(木) 16:07:380046デフォルトの名無しさん
2008/10/16(木) 16:10:350047デフォルトの名無しさん
2008/10/16(木) 16:14:12☆ ☆ ☆
☆ ☆
*
∧_,,∧
<,, >
( )
し○-J
~"''"""゛"゛""''・、
""゛""''""""゛゛""''' "j'
:::::ヘ :::::....ヽ :::;;;ノ ::(
:: ゝ :::::......ノ:;;../ ~~^^ ~~~~~^^^~ ~~^^ ~~^^ ~~~~~^^^~ ~~^^~~~^
0048デフォルトの名無しさん
2008/10/16(木) 17:07:10どうして小さいか
0049デフォルトの名無しさん
2008/10/16(木) 17:08:35大きいかった場合は?
0050デフォルトの名無しさん
2008/10/16(木) 17:16:260051デフォルトの名無しさん
2008/10/16(木) 17:19:17ひんと ニ分木
0052デフォルトの名無しさん
2008/10/16(木) 17:24:29_分木
0053デフォルトの名無しさん
2008/10/16(木) 17:25:36a<bでもb<aでも無い場合とかじゃね
0054デフォルトの名無しさん
2008/10/16(木) 18:14:46ない
0055デフォルトの名無しさん
2008/10/16(木) 18:53:10三分木
0056デフォルトの名無しさん
2008/10/16(木) 18:54:39三分木
 ̄
0057デフォルトの名無しさん
2008/10/16(木) 19:17:080058デフォルトの名無しさん
2008/10/16(木) 19:28:27三分木
三
0059デフォルトの名無しさん
2008/10/16(木) 20:25:290060デフォルトの名無しさん
2008/10/16(木) 20:38:25もちろん話の上では>>53の言うとおり、a<bでもb<aでも無い場合に2つの値は等価と扱われる。
それと、mapをbegin()からend()まで辿るとソートされていることが分かる。
実質ほとんど<ばかり調べ続ければ十分。
0061デフォルトの名無しさん
2008/10/16(木) 23:37:57windowsアプリケーションの勉強をしていて本に載ってる環境設定が古いバージョンの物なのでわかりません。サンプルプログラムを実行してもエラーがでます
プロジェクト作成はwin32コンソールアプリケーション→windows アプリケーション→空のプロジェクトチェック→OKの手順で作っています
ソース
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MessageBox(NULL,"Kitty on your lap","メッセージです",MB_OK);
return 0;
}
エラー名
error C2664: 'MessageBoxW' : 2 番目の引数を 'const char [18]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
改善方法を教えてください
0062デフォルトの名無しさん
2008/10/16(木) 23:43:210063デフォルトの名無しさん
2008/10/16(木) 23:43:23http://wisdom.sakura.ne.jp/system/winapi/win32/win4.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win5.html
0064デフォルトの名無しさん
2008/10/16(木) 23:43:440065デフォルトの名無しさん
2008/10/16(木) 23:44:500066デフォルトの名無しさん
2008/10/16(木) 23:45:16世間では_TじゃなくてTEXTを使う方が一般的なのか?
0067デフォルトの名無しさん
2008/10/16(木) 23:47:24すばやい回答ありがとうございました!
0068デフォルトの名無しさん
2008/10/16(木) 23:48:28単にサンプルが古くて>>61のように書かれてただけだろ。
例えば猫でも分かるのSDK編とか。
0069デフォルトの名無しさん
2008/10/16(木) 23:48:380070デフォルトの名無しさん
2008/10/16(木) 23:50:03でも明らかに>>63と文字列が同じだよ?
0071デフォルトの名無しさん
2008/10/16(木) 23:50:07TEXTは<windows.h>をインクルードするだけで使える。
_Tは<tchar.h>をインクルードする必要がある。
そのせいで、あまりにも短すぎるサンプルだとTEXTが好まれる傾向にあると感じる。
TEXTと_Tで異なる状態になるってのは有り得ないから混同しても問題なく、どっち使うかは好みの問題。
TCHARと_TCHARだとそうもいかない場合があったかもしれないが。
0072デフォルトの名無しさん
2008/10/17(金) 00:04:01文字列には L"・・・" みたいにLをつける。
これで、すっきり。
0073デフォルトの名無しさん
2008/10/17(金) 00:07:45アンダースコアが付いているバージョンはCランタイムヘッダーファイルがデフォルトで扱う文字セットを制御する
ちゃんと違いはあるよ
0074デフォルトの名無しさん
2008/10/17(金) 00:44:17を
T("もじれつ") または "もじれつ" か L"もじれつ"
にするマクロはかけないの
0075デフォルトの名無しさん
2008/10/17(金) 00:46:23普通に置き換えでいいでしょ
0076デフォルトの名無しさん
2008/10/17(金) 00:51:49TEST* stTEST = new TEST [i];
・・・ここまで構造体配列stTESTの内容を設定・・・
do{
if( stTEST == NULL ) cout << "null1" << endl; //バグチェック1
・・・stTESTを使う100行くらいの処理・・・
//上記の処理でstTESTの新しいメンバが設定される、
//要素の追加の処理を知らないのでいったん削除して1つ大きく宣言しなおす
i++;
delete [] stTEST;
stTEST= NULL;
TEST* stTEST = new TEST [i];
・・・stTESTを再設定・・・
if( stTEST == NULL ) cout << "null2" << endl; //バグチェック2
}while( currentNum < limitNum );
こんな感じで構造体配列stTESTを処理に使っていて、
do whileループで条件を満たさない限り構造体のメンバが1つずつ増える内容なのですが
上記のようにかなり強引にメンバを追加しようとしています。
実際これをコンパイルし実行すると1度最後のwhileまで実行された後バグチェック1に引っかかりエラーとなります。
このような無理やりなやり方ですがバグチェック2のあたりでは正常なのに
ループ始端のバグチェック1ではNULLとなってしまうのがわかりません。
バグチェック2とバグチェック1の間は実質何もないのになぜこうなるんでしょうか。
わけのわからない質問かつclassも知らないC言語上がりの恥ずかしい内容だとは思いますがよろしくお願いします。
0077デフォルトの名無しさん
2008/10/17(金) 00:56:200078デフォルトの名無しさん
2008/10/17(金) 01:00:190079デフォルトの名無しさん
2008/10/17(金) 01:04:190080デフォルトの名無しさん
2008/10/17(金) 01:12:20いったんdeleteなりをしてなくなったことにして、
もう一度いちから宣言するというこのやりかた自体NGなのでしょうか。
にしてもループの終端と始端でNULLだったりしなかったりするのがよくわかりません。
>>78
reallocの存在を知りませんでした。今から試してみます。
ありがとうございます。
0081デフォルトの名無しさん
2008/10/17(金) 01:13:552バイトでデータを区切って10バイト目を抜き出す場合、
___int16 afData[100];
afData = pbefData;
a = afData[4];
とかを想像しましたがエラー出まくりです。配列も大きいデータだとどこまで作れるのかわからないし。いい方法があったら教えてください。
0082デフォルトの名無しさん
2008/10/17(金) 01:15:06これを2回書いちゃってるから、再定義してるよこのスカポンタンて言われてると思う
stTEST = new TEST[i]; でいいんじゃないのかな
0083デフォルトの名無しさん
2008/10/17(金) 01:20:09むり
0084デフォルトの名無しさん
2008/10/17(金) 01:27:41エラー出なくなりました!
たしかに再定義ですね。int i = 0;を2回言うのと同じですね
人のプログラムを引き継いでやってるので意味もわからずコピペしてました。
でも別の問題なのか所望の動作しないwwでも頑張ります!
>>78のreallocもやるつもりです。ありがとうございました。
0085デフォルトの名無しさん
2008/10/17(金) 03:54:29えー。。。
0086デフォルトの名無しさん
2008/10/17(金) 06:46:10どのようなものを指すのですか?
拡張子がlibのもの?
教えてください><
0087デフォルトの名無しさん
2008/10/17(金) 07:00:29たとえばスタンダード テンプレート ライブラリは万能ライブラリ
0088デフォルトの名無しさん
2008/10/17(金) 07:05:531Gのファイルを、読み込んで1バイトずつの総和を求めようとした場合、
メモリマップドファイルと、一気に1Mずつ読み込むのでは速度差は出ますか?
0089デフォルトの名無しさん
2008/10/17(金) 07:57:03stdio のようなもののことでは?
0090デフォルトの名無しさん
2008/10/17(金) 07:57:49仕組みを考えると、処理速度を追求したものではないと思うのですが。
0091デフォルトの名無しさん
2008/10/17(金) 09:14:26実験してみます。 自前キャッシュを使うか、OSとメモリマップドファイルに
任せるかの違いなんですが。
シーケンシャルリードだったらそんなに変わらないと良いんですが。
0092デフォルトの名無しさん
2008/10/17(金) 09:23:50デスマーチに倒れていった先人のプログラマ達の霊を供養するライブラリじゃないかな
来年使う時期までまだ時間があるから自分自身が合掌される側に回らない程度にがんばれ
0093デフォルトの名無しさん
2008/10/17(金) 11:02:48こういうことか?
それとも、凡庸か?
0094デフォルトの名無しさん
2008/10/17(金) 11:26:090095デフォルトの名無しさん
2008/10/17(金) 11:40:24C++は使ってはいけないということになるんでしょうか。
提供されているヘッダには、
#ifdef __cplusplus
extern "C"
{
#endif
って書いてあります。
また、「Cランタイム関数のみを利用し、OS提供の関数を利用するな」ってあるんだけど、
どういう場合にこういう制限を設けるんでしょうか。
0096デフォルトの名無しさん
2008/10/17(金) 11:55:05マニュアルに記述がないなら、何か問題があっても保証の限りではないってところでは
動くかもしれないけど保証はしない、自己責任でどうぞって感じ
移植性が必要なコードを書くときにはそういう制限を設ける
例えばWindows専用の関数を使ってしまったらMacに移植できない
0097デフォルトの名無しさん
2008/10/17(金) 15:44:11関数はTCHAR用、文字列はL""にしておいて
もしMBCSが必要になったらそこだけ置換すりゃいいんでねーの
0098デフォルトの名無しさん
2008/10/17(金) 16:35:560099デフォルトの名無しさん
2008/10/17(金) 16:40:480100デフォルトの名無しさん
2008/10/17(金) 18:16:34int a [][2] = { 0, 60, 120, 180, 240, 360, 420, 540, 600, 660, 720, 780 };
int b[6][2];
aの内容をそっくりbにコピーしたい
0101デフォルトの名無しさん
2008/10/17(金) 18:32:53#include <stdio.h>
int main(void)
{
int i, j;
int a [][2] = {{0, 60}, {120, 180}, {240, 360}, {420, 540}, {600, 660}, {720, 780}};
int b[6][2];
for (i = 0; i < sizeof(a) / sizeof(int); i++)
((int *)b)[i] = ((int *)a)[i];
for (i = 0; i < 6; i++) {
for (j = 0; j < 2; j++)
printf("%d ", b[i][j]);
putchar('\n');
}
return 0;
}
0102デフォルトの名無しさん
2008/10/17(金) 18:41:22memcpy(b, a, sizeof(a));
0103デフォルトの名無しさん
2008/10/17(金) 18:42:380104デフォルトの名無しさん
2008/10/17(金) 18:47:03VCなら
ttp://blogs.wankuma.com/melt/archive/2007/03/12/66223.aspx
0105デフォルトの名無しさん
2008/10/17(金) 19:32:15ご協力ありがとうございました。memcpyでいけました
0106デフォルトの名無しさん
2008/10/17(金) 19:33:29ご協力ありがとうございました。memcpyでいけました
0107デフォルトの名無しさん
2008/10/17(金) 19:47:04ご協力ありがとうございました。memcpyでいけました
0108デフォルトの名無しさん
2008/10/17(金) 19:50:40ご協力ありがとうございました。memcpyでいけました
0109デフォルトの名無しさん
2008/10/17(金) 19:51:12ご協力ありがとうございました。memcpyでいけました
0110デフォルトの名無しさん
2008/10/17(金) 19:54:35ご協力ありがとうございました。memcpyでいけました
0111デフォルトの名無しさん
2008/10/17(金) 19:54:49おちつけw
0112デフォルトの名無しさん
2008/10/17(金) 19:55:20おちつけw
0113デフォルトの名無しさん
2008/10/17(金) 19:56:05おちつけw
0114デフォルトの名無しさん
2008/10/17(金) 20:30:15おちつけw
0115デフォルトの名無しさん
2008/10/17(金) 20:37:05クラスのprivateで
typedef struct abc = {
int a;
char b;
} A, *B;
B b;
void AAA
{
A a[3] = {
0116115
2008/10/17(金) 20:37:530117デフォルトの名無しさん
2008/10/17(金) 20:38:23おちつけw
0118デフォルトの名無しさん
2008/10/17(金) 20:42:39n = new int[3];
これってint n[3]ってことですか?
となると、これに他のアドレスは代入できないのでしょうか?
0119デフォルトの名無しさん
2008/10/17(金) 20:45:26int *n;
n = new int[3];
delete[] n;
n = new int[5];
int *m = n;
n = new int[7];
delete[] n;
delete[] m;
0120デフォルトの名無しさん
2008/10/17(金) 20:53:25int a[num] = { 3, 5, 1 };
int b[num];
b = a;
これは可能ってことですか?
今実行環境がないので試せないので誰が教えてください><
0121デフォルトの名無しさん
2008/10/17(金) 20:56:030122デフォルトの名無しさん
2008/10/17(金) 20:56:59コンパイルエラー
0123デフォルトの名無しさん
2008/10/17(金) 20:59:44aとbは定数だから代入はできない
0124120
2008/10/17(金) 21:02:41初歩的な質問すぎて申し訳ないです。
0125デフォルトの名無しさん
2008/10/17(金) 21:05:57ネットに繋がるパソコンがあるなら環境を作ったほうがいい
Visual Studio Express Edition あたりを検索ワードにすれば無料で使えるコンパイラが見つかる
0126デフォルトの名無しさん
2008/10/17(金) 21:06:140127デフォルトの名無しさん
2008/10/17(金) 21:06:58>>100,102
012829
2008/10/17(金) 21:36:08というか、自分ではどうすればいいのかわからないので、その方法で行きます。主要なメッセージだけ主ファイルの
関数から呼ぶというのは、自分のレベルでは理解できないので、まずは、別ファイルにかく方法でいきたいとおもいます。
どうもありがとうございました。
>>他に回答くださった皆さん。
VC6は兄の押入れにあったやつです。もう眠っているやつみたいなので、やってみました。
みなさん、ありがとうございました。お礼が遅れて済みませんでした。
0129デフォルトの名無しさん
2008/10/17(金) 21:49:39他にメモリをコピーできるのはないんですか?
0130デフォルトの名無しさん
2008/10/17(金) 21:51:000131デフォルトの名無しさん
2008/10/17(金) 21:53:39何で他のが欲しいのかよく分からんけど、メモリ上にどういったレイアウトで
配置されてるかを知っておかないとそのうち困るよ
0132デフォルトの名無しさん
2008/10/18(土) 00:48:25�@cinで数値を入力させたaをマイナスにしてやりたい時はそのまま-aみたいに書いちゃってもいいんでしょうか?
�Awhile文にて、bが-aより大きく、かつbはaより小さいとき、と書きたい時は
while(-a<b && b<a)
という書き方をしても大丈夫でしょうか?
あまり丸投げにすると悪いんでこんな形の質問ですがよろしくお願いします
0133デフォルトの名無しさん
2008/10/18(土) 01:07:43�@OK
�AOK。ただし、<は半角で。
0134デフォルトの名無しさん
2008/10/18(土) 01:16:46返答ありです
基本的にプログラムしたことはうまくいってくれるんだけど
while()内の条件通りに繰り返してくれないのはやっぱり()内の条件付けの考え方を間違えてるんでしょうか?
0135デフォルトの名無しさん
2008/10/18(土) 01:33:36int* a;
int b[5] = {2,3,4,5,0};
a = b;
c = sizeof(a);
ポインタaの中のバイトサイズを知るにはどうすればいいんですか?sizeofでとりだせません。
0136デフォルトの名無しさん
2008/10/18(土) 02:12:39c に sizeof(int) * 5 を期待しているのであれば、無理だと思います。
0137デフォルトの名無しさん
2008/10/18(土) 02:30:09だと、cに4が入ってしまします。
c = sizeof(*a);
こうすると*aにはbのアドレスが入ってるからいいとおもったんですが、cに2が入るんです。
どうしてもbのサイズ20が取り出せません。どうすればいいか教えてください
0138デフォルトの名無しさん
2008/10/18(土) 02:38:31残念ながら無理だと思います。
b のアドレスだけをみて、「b が配列のあたまのアドレスでありかつ配列のサイズはsizeof(int)*5 ということが、普通わかるのでしょうか?
べつに自分で管理でもしておかないかぎり、不可能だと思います。
ところで環境はなんですか?sizeof(int *) =2、sizeof(int) = 4、というのは、ちょっとよくわからないのですが?スモールモデル?タイニーモデル(いずれも死語)?
0139デフォルトの名無しさん
2008/10/18(土) 02:41:45間接演算子「*」をポインタに付けると、そのポインタが指している変数の中身にアクセスできます
つまり*aはb[0]に入っている「2」を指します
bのサイズを得るにはsizeof(b)とするしかありません
sizeof(a)で得られるのはアドレスのサイズ、sizeof(*a)で得られるのはint型のサイズです
0140デフォルトの名無しさん
2008/10/18(土) 02:57:54>>132
while(abs(a) > b)も可
でも>>133でダメなら問題文の解釈ミスだろうな
0141デフォルトの名無しさん
2008/10/18(土) 03:00:00そこで不用意に「2」とかかくと sizeof(*a)がb[0]の内容を返すように見えるから困る
0142デフォルトの名無しさん
2008/10/18(土) 03:02:43環境というかすいません、取り出した値は間違えでした。int部分はすべて__int16で実行した数値を書いてしまいました。ごめんなさい。
0143デフォルトの名無しさん
2008/10/18(土) 03:14:180144デフォルトの名無しさん
2008/10/18(土) 03:16:14とか
0145デフォルトの名無しさん
2008/10/18(土) 03:24:54配列数が固定されてると、data[100001];にしたくなった場合また配列を作らなければいけないんですか?
0146デフォルトの名無しさん
2008/10/18(土) 03:39:28100kバイトのデータを編集してサイズを変えて80kバイトにした時に
メモリに無駄なくデータ型でキャストして配列にして個々に取り出せるようにしたいんです。
型 data;
__int16[sizeof(data)/2] = data;
これで解決出来そうなんですが、型の部分が不明です。なにがいいか教えてください。
0147デフォルトの名無しさん
2008/10/18(土) 03:45:34もう何が言いたいのかすごく分からないんだけど、メモリの動的確保を知ればいいのだろうか
0148デフォルトの名無しさん
2008/10/18(土) 03:56:14C++ならnewを使いなされ
0149デフォルトの名無しさん
2008/10/18(土) 04:05:40とりあえずポインタという単語は覚えたようだけど
発言からしてその機能(というか用途や存在意義?)は
まだ完全には理解できてないのはわかる
0150デフォルトの名無しさん
2008/10/18(土) 04:05:460151デフォルトの名無しさん
2008/10/18(土) 04:13:59よく考えたらサイズのわからないデータを型で変数確保するなんて無理ですよね。
動的確保で作成、解放の繰り返しで対応しようと思います。ありがとうございました。
あ、でもsizeof(data)でサイズを調べた後ならそのサイズが収まるデータ型を指定して確保するような型はありそうでないんでしょうか?
struct newType{
__int16 type[sizeof(data)/2];
};
あ、でもsizeofで調べるdataの型はなんだろう・・・頭がやばい感じになってきました
0152デフォルトの名無しさん
2008/10/18(土) 04:16:200153デフォルトの名無しさん
2008/10/18(土) 04:32:06>>151
まず背伸びをやめることから始めようか
0154デフォルトの名無しさん
2008/10/18(土) 04:48:21基礎からやるのを恥ずかしがるなよ
0155デフォルトの名無しさん
2008/10/18(土) 04:54:20下記のようにコンパイルした後に動作確認を行っているのですが、
これを一回のコマンドで実行できないでしょうか?
bcc32 test.c
test
0156デフォルトの名無しさん
2008/10/18(土) 04:57:000157デフォルトの名無しさん
2008/10/18(土) 05:05:20どうもありがとう。
0158デフォルトの名無しさん
2008/10/18(土) 08:03:230159デフォルトの名無しさん
2008/10/18(土) 09:21:38// リマーク行
continue;
}
-------------------------------------------
if(buff[0] == '#')
// リマーク行
continue;
この2つって全く違いますか? {} があるかないかで
0160デフォルトの名無しさん
2008/10/18(土) 09:28:210161デフォルトの名無しさん
2008/10/18(土) 09:32:160162デフォルトの名無しさん
2008/10/18(土) 10:44:380163デフォルトの名無しさん
2008/10/18(土) 10:51:21WM_SETFONT
0164デフォルトの名無しさん
2008/10/18(土) 10:57:59いくつか打ち込んでみて、正常に動いたのですが
間違っているところがあるのではないかと不安です。
どなたか、チェックをお願いします。
0165デフォルトの名無しさん
2008/10/18(土) 11:12:1615とか入れてみた?
0167デフォルトの名無しさん
2008/10/18(土) 11:29:49ありがとうございます!
0168デフォルトの名無しさん
2008/10/18(土) 12:42:51URLにフイタ
0169デフォルトの名無しさん
2008/10/18(土) 14:44:050170デフォルトの名無しさん
2008/10/18(土) 15:31:59>>1 見て笑っとけ
0171デフォルトの名無しさん
2008/10/19(日) 02:03:34char buff[20]
while(!=EOF){
buff[a++]=fgetc(f);
buff[a] = '\n';
}
printf("%s\n",buff);
でOSによってゴミが表示されたり、表示されなかったりするんですけれど、
基本的に、ゴミが表示される方が正しいんですか?表示されない方が
正しいんですか?
0172デフォルトの名無しさん
2008/10/19(日) 02:07:01最後は '\n' じゃなくて '\0' にしないとまずいだろ
0173デフォルトの名無しさん
2008/10/19(日) 02:36:540174デフォルトの名無しさん
2008/10/19(日) 02:49:31\0です。
ところで、ゴミが入るのは普通ですか?
0175デフォルトの名無しさん
2008/10/19(日) 02:54:37>>173
せめてちゃんと直してから質問しなおせ
\0に変えてもまだおかしいぞ
0176デフォルトの名無しさん
2008/10/19(日) 03:24:29if(c != ':'){
buff[at++] =c;
}
if(c == ':'){
ungetc(c,f);
buff[at] = '\0';
printf("%s",buff);
では、これで。
どうしてもゴミが入るんですが...
0177デフォルトの名無しさん
2008/10/19(日) 03:58:15whileや2回目のifの終端が分からんような断片的なソースを張るな。
とりあえずatを初期化しろ
0178デフォルトの名無しさん
2008/10/19(日) 03:59:34馬鹿なんだから、自分でここが原因だろうなとか考えるな
全部貼れカス
0179デフォルトの名無しさん
2008/10/19(日) 04:09:37取ってもそこから過去T時間内にはN個以下のリクエストしか送ってないようにしたいです。そのために
以下のようなアルゴリズムでやろうとおもうのですが、いいでしょうか?
(これって有名な問題でしょうか?)
まず、リクエストを送信した時間を記録しておくキューを準備します。
そしてリクエストを出す際には、その時点から過去T時間まで遡って何個のリクエストが出ていたかを確認し、
(1)N個より少なかった場合
リクエストを出して、その時間をキューに追加します。そのときT時間よりも過去に送信したリクエストは
キューから削除します。
(2)N個だった場合
これ以上送れないので、リクエストを保留リストに繋ぎ、一番古いリクエストからT時間後に送信するように
OSのタイマーを使って設定します。
なんかこんがらがって来た。これでいいでしょうか?
0180デフォルトの名無しさん
2008/10/19(日) 04:27:57ここで答えるマはちょうどこれらを受けるレベルと重なるから
以後、日を改めた方がいいかもね
0181デフォルトの名無しさん
2008/10/19(日) 04:53:20#include<deque>
#include<cstdio>
#include<cstdlib>
#define N 5
#define T 100
#define TIME_MAX 1000
class connection_t{
public:
time_t send, post;
connection_t():send(0),post(0){}
};
int request_proc(connection_t &connection, time_t send){
connection.send=send;
}
int main(void){
std::deque<connection_t> request;
connection_t temp;
for(time_t t=1;t<TIME_MAX || request.size()>0;t++){
while(request.size() && t-request[0].send>=T){ // 時間T経過したリクエストをキューから削除する
printf("post=%d send=%d\n", request[0].post, request[0].send);
request.pop_front();
if(request.size()>=N) request_proc(request[N-1], t); // 待ち状態のリクエストがあれば処理する
}
if(rand()%10==0 && t<TIME_MAX){ // リクエスト発生!!!
temp.post=t;
request.push_back(temp);
if(request.size()<=N) request_proc(request.back(), t); // N個目までは無条件にリクエストを処理する
}
}
return 0;
}
0182デフォルトの名無しさん
2008/10/19(日) 06:12:00その中身を表示する関数って書けますか?
std::vector<T>だけでいいなら
template <class T>
void show(std::vector<T> &v){
for (unsigned int i = 0; i < v.size(); ++i) {
cout << v[i] << " ";
}
cout << endl;
}
こんな感じでよく使ってるんですが。
0183デフォルトの名無しさん
2008/10/19(日) 06:13:31void show(T &v){
for (unsigned int i = 0; i < v.size(); ++i) {
cout << v[i] << " ";
}
cout << endl;
}
0184デフォルトの名無しさん
2008/10/19(日) 06:29:26void show(T &v){
for( typename T::iterator it = v.begin(); it != v.end(); ++it )
{
std::cout << *it << " ";
}
std::cout << std::endl;
}
これで標準コンテナは大体いけるんじゃないか?
0185デフォルトの名無しさん
2008/10/19(日) 06:40:28#include <boost/range.hpp>
template<class T>
void show(const T &v)
{
typedef boost::range_iterator<const T> iter_t;
for(iter_t iter=boost::begin(v); iter!=boost::end(v); ++iter)
{
std::cout << *iter << " ";
}
std::cout << std::endl;
}
でもこんな関数書くくらいなら
std::copy(v.begin(), v,end(), std::ostream_iterator<T>(std::cout, " "));
でいいじゃんと思ったり
0186デフォルトの名無しさん
2008/10/19(日) 11:25:53空白で区切られて思ったようにいかないんだけど、\nか\0のみで区切れる関数、ルーチンってないですか?
ちなみに処理系はVC9です
0187デフォルトの名無しさん
2008/10/19(日) 11:30:200188デフォルトの名無しさん
2008/10/19(日) 11:50:38たとえstatic宣言した変数であっても
extern宣言することによって外部から参照できてしまう
とありました。これは本当ですか?
手元で試してみるとそんなことはないようなのですが…
「C/C++による組み込みソフトウェア開発技法]
下記は_gが見つからないとコンパイルエラーになりました。
a.c---
static int g = 10;
b.c---
#include <stdio.h>
extern int g;
int main(void)
{
printf("%d\n",n g);
return 0;
}
0189デフォルトの名無しさん
2008/10/19(日) 11:55:31その本の前提がおかしいんじゃないか?
普通、C/C++ではstaticはファイルスコープを持つから外部には公開されないぞ。
0190デフォルトの名無しさん
2008/10/19(日) 12:05:50誰か解説してくれ〜
181の動きがよくわからん。動作させてみて、ちゃんと動いてそうなんだけど、どうもよくわからん。
(1)1度もsendされないままプログラムが終了してしまうリクエスト(connection_tで表されるやつ)が
ないことは保証できるか?
tがTIME_MAXを過ぎた時に、request_proc()してないリクエストが1個とかのこってる状況ってどうすんのかな?
(2)2回sendされるリクエストは絶対にないか?
request_proc()は2個所から呼ばれてるけど、それぞれのIF文の条件が微妙にかぶってるのが理解しにくい。
すごいよ、こんなソースを短い時間でパッパッと書いちゃうなんて。
0192186
2008/10/19(日) 12:44:03つまりgetlineつかうとscanfみたいになるからfgetsみたくifstreamで動作させたいってこと
0193デフォルトの名無しさん
2008/10/19(日) 12:45:03こんなん?
getline(ifs, str)
0194192
2008/10/19(日) 12:56:28荒らしてスマソ・・・
0195デフォルトの名無しさん
2008/10/19(日) 14:11:15別人だけど。
(1) 送信されないまま終わると思う
擬似的に>>179のアルゴリズムだけ組んだものっぽいから、
プログラム終了した後のことまで面倒見てないのではない?
その辺のところは実際には、リクエストに対するレスポンスを
同期的に受けるのか非同期で受けるのかでも対応変わって来そう出し。
(2) 無い・・・と思う
条件文が微妙に被っているのは、
while内の条件では、条件判定の直前にpop_frontしてるんで、
requestキューの要素数が1つ減ってるからじゃない?
条件文が被らないようにするなら、
pop_frontする前にrequest.size()>Nをチェックをして
request[N]のポインタを保存しとくことになるのかな。
まぁ、でも条件が被らなくなるだけで、キューの中身は
2つ目の条件式を判定した時の状態と全然違うから、
あまり意味は無いか。
0196デフォルトの名無しさん
2008/10/19(日) 20:01:45デバックでビルドすると普通にコンパイル→リンクできるのですが、
リリースでビルトすると
1>_Lib_DXCamera.obj : error LNK2001: 外部シンボル "_D3DXMatrixLookAtLH@16" は未解決です
こんな感じなのが数個でてビルドできません。
解決方法教えてください!
0197デフォルトの名無しさん
2008/10/19(日) 20:18:45プロジェクトの設定を見直す。
0198デフォルトの名無しさん
2008/10/19(日) 20:24:44ありがとうございます
0199デフォルトの名無しさん
2008/10/19(日) 20:29:34ティア活動にも積極的に関わるし、日々の祈りもかかさない。 日本へ移住したのも布教活動のためだ
と言うし、日本語は実になめらかである。 このバイタリティが信仰心から生まれるものなら宗教も悪
いものではないとさえ思えてくる。
私自身は典型的な日本人がそうであるように無宗教に近い仏教徒だ。ジョンと友人になった経緯は長
くなるのでその話はまたの機会とさせてもらうが、思いおこせば奇跡的な出会いと思わざるを得ない。
さて、最近のジョンは日本のサブカルチャー、とりわけアニメに感心をもったようで、日本では誰も
が知っているアニメというと何だろうと私に質問してきた。
「ポケモン」や「サザエさん」といった定番のものを紹介し、最後に「ドラえもん」を紹介した。す
るとジョンは「ドラえもん」に対して異常に怯えはじめた。 ドラエもんの中には悪魔がいるというのだ。
言われてみるとDORAEMONの中にはDEMONがある。 そして、ねこ大好きな純朴な人々に自分は猫型だと
偽るなど実に悪魔的な諸行ではないか。そんなことにも気付かずに我々はドラえもんをほほえましい
人間の味方と騙されきっていたとは自分の馬鹿さ加減に呆れる。
未だ自分が悪魔に騙されていると気付いていない愚かな悪魔崇拝者どもの目を醒させるために我々は
活動を開始することにした。 手始めに猫スレを巡回してこの事実を広めていこうと思う。 皆にはこ
の文章をなるべく多くの目に触れるようにコピペしてもらいたい。
Kill DORAEMON, Kill DEMON !!!
0200デフォルトの名無しさん
2008/10/19(日) 20:46:14阿呆
0201デフォルトの名無しさん
2008/10/19(日) 20:54:10阿呆
0202デフォルトの名無しさん
2008/10/19(日) 20:56:36ド阿呆
0203デフォルトの名無しさん
2008/10/19(日) 21:06:28考えることもできるんじゃないかな。
どれだけキリスト教と関係あるか知らないけど。
0204デフォルトの名無しさん
2008/10/20(月) 00:43:41ですので、こちらに書かせてもらいます。
ファイルパスについての質問です。
「実行ファイルを元にした相対パスを、
絶対パスにするにはどうしたらいいのでしょうか?」
相対パスを絶対パスに変換する関数は見付かったのですが、
カレントディレクトリを元にしているため、
カレントが変わると結果も変わってしまって困っています。
環境
OS:Windows XP
コンパイラ:BCC(一応VCも入れてある)
0205デフォルトの名無しさん
2008/10/20(月) 01:32:20その実行ファイルの絶対パスとくっつければいいんでね?
としか思えんのだが、それがダメなら理由を説明しろ。
状況がわからん。
0206デフォルトの名無しさん
2008/10/20(月) 02:10:09最初はそれでもいいかと思ったのですが、
途中で、「実行フォルダの1つ上のフォルダ」に変更があった場合(あくまで例)、
編集しやすいようにと思った次第です。
出来ないのであれば、絶対パスを返す関数を探しますけど。
0207デフォルトの名無しさん
2008/10/20(月) 06:54:220208デフォルトの名無しさん
2008/10/20(月) 07:06:58俺も忘れたけど
0209デフォルトの名無しさん
2008/10/20(月) 08:34:240210デフォルトの名無しさん
2008/10/20(月) 09:33:58カレントディレクトリの変更
#include<stdlib.h>
int _chdir(const char *dirname); //vc
int chdir(const char *dirname); //gcc
カレントディレクトリを取得
char *_getcwd(char *buffer, int maxlen); //vc
char *getcwd(char *buffer, int maxlen); //gcc
bccでの有無は知らんが、bccなんて載ってるわけがねぇ
なんでいまだに初めての環境がbccってのが多いんだろ
0211デフォルトの名無しさん
2008/10/20(月) 09:39:52Windows限定でいいのならPathAppend
0212デフォルトの名無しさん
2008/10/20(月) 09:40:02ありがとうス。でも手元のマシンでログとか色々いれて>>181のソース動かしてるんだけど、
送信されないままのリクエストってないんですよ。沢山動かしてみたから
たまたまとかじゃなくて、ロジックとしてそうなってるんだと思うけど、
どうしてもその辺が納得できない。
if(request.size()>=N) request_proc(request[N-1], t); // 待ち状態のリクエストがあれば処理する
}
この行だけなかなか理解できないス。2個目の質問はおかげで理解できました。
ありがとうス。
0213デフォルトの名無しさん
2008/10/20(月) 10:50:00>>195
ようやく分かりました。リクエストが呼ばれないままプログラムが終わることは
ないと思います。キューの中で先頭からN個のリクエストだけが常にSENDになっていて、
一番古い先頭のリクエストがT時間たった時点でのみN番目のリクエストがN-1番目に下りてくる。
しかしこんなソースよく書けますね
ありがとうございました。
0214デフォルトの名無しさん
2008/10/20(月) 11:46:29class C {
int c, v;
C() : c(0) {}
C(int val) v(val) {}
};
とおいた場合、
C hoge(0);
として
hoge.c
は初期化されているのでしょうか。
0215デフォルトの名無しさん
2008/10/20(月) 11:50:280216デフォルトの名無しさん
2008/10/20(月) 11:55:160217デフォルトの名無しさん
2008/10/20(月) 14:47:26コピーされて基底クラスの集合になっちゃうんですが、どうすればよいんでしょうか。
shared_ptrでポインタをつっこむのが定番でしょうか。
0218デフォルトの名無しさん
2008/10/20(月) 16:03:12short 16
int 32
long おう
じゃないの?
そのせーでlong long とか見苦しいことしないといけないし
0219デフォルトの名無しさん
2008/10/20(月) 16:10:330220デフォルトの名無しさん
2008/10/20(月) 16:25:13ひんと ごかんせー
0221デフォルトの名無しさん
2008/10/20(月) 17:39:250222デフォルトの名無しさん
2008/10/20(月) 17:45:470223デフォルトの名無しさん
2008/10/20(月) 17:46:390224デフォルトの名無しさん
2008/10/20(月) 17:47:290225204
2008/10/20(月) 17:54:12ありがとうございます。
ちょっと調べてきます。
実は実行ファイルの絶対パスをくっ付けるのでとりあえずしていたので、
出来そうなら修正します。
0226デフォルトの名無しさん
2008/10/20(月) 19:05:51PathAppendではなくPathCombineだった。失礼。
0227デフォルトの名無しさん
2008/10/20(月) 19:20:36int data;
char mozi[10];
}Hoge;
という構造体の配列 Hoge huga[10]を宣言します。
i番目のHogeのメンバーのmoziの1文字目にアクセスしたいんですが、どう書けばいいんですか?
huga[i].mozi[1]かな?と思ったんですが・・・
0228デフォルトの名無しさん
2008/10/20(月) 19:24:110229デフォルトの名無しさん
2008/10/20(月) 19:25:08でもコンパイルできないんです
0230デフォルトの名無しさん
2008/10/20(月) 19:30:290231デフォルトの名無しさん
2008/10/20(月) 19:32:21といわれます
0232デフォルトの名無しさん
2008/10/20(月) 19:35:350233デフォルトの名無しさん
2008/10/20(月) 19:40:530234デフォルトの名無しさん
2008/10/20(月) 19:42:460235デフォルトの名無しさん
2008/10/20(月) 19:45:170236デフォルトの名無しさん
2008/10/20(月) 19:50:250237デフォルトの名無しさん
2008/10/20(月) 20:09:350238デフォルトの名無しさん
2008/10/20(月) 20:12:440239234
2008/10/20(月) 20:22:310240デフォルトの名無しさん
2008/10/20(月) 20:24:47一文字だけ比較なら、
if (huga[0] == str[0]) ・・・
でいいよ。
0241デフォルトの名無しさん
2008/10/20(月) 20:31:470243デフォルトの名無しさん
2008/10/20(月) 21:56:14でももしそうなら、もう最初の質問文の時点でコールド負けしてるぞ、お前w
0244デフォルトの名無しさん
2008/10/20(月) 23:09:04if(fopen_s(&fpout, "data.txt", "w")){
exit(1);
}
で出力用のファイルを作成するとソースファイルとかがある階層にファイルが作られますが、
フォルダを作って、その階層にファイルを作ることはできますか?
0245デフォルトの名無しさん
2008/10/20(月) 23:11:12もちろん出来るよ
0246デフォルトの名無しさん
2008/10/20(月) 23:11:47if(fopen_s(&fpout, "data\data.txt", "w")){
exit(1);
}
ってやったんですがエラーになります・・・
0247デフォルトの名無しさん
2008/10/20(月) 23:12:36\→\\
0248デフォルトの名無しさん
2008/10/20(月) 23:19:16それでもだめでした。ファイルポインタエラーになります
0249デフォルトの名無しさん
2008/10/20(月) 23:20:25フォルダがなければ作成
0250デフォルトの名無しさん
2008/10/20(月) 23:21:50フォルダは作ってくれないんですね・・
WinApiじゃないとフォルダ作成はむりですか?
0251デフォルトの名無しさん
2008/10/20(月) 23:26:38MSDN見てみてね。
0252デフォルトの名無しさん
2008/10/20(月) 23:27:13こっちがいいか。
0253デフォルトの名無しさん
2008/10/20(月) 23:51:47class ABC {
public:
};
としたとき、テンプレート値を省略できて、それを検知して適切な処理をさせられますか?
0254デフォルトの名無しさん
2008/10/20(月) 23:53:080255デフォルトの名無しさん
2008/10/21(火) 00:26:22ありませんか?
0256デフォルトの名無しさん
2008/10/21(火) 00:26:45特化パラメータを指定しないとテンプレート を使えない
とでます。ネットで調べた方法 template <class T = int>のようにした場合です。
0257デフォルトの名無しさん
2008/10/21(火) 00:29:30それを使うときにはABC<>のように空の括弧が要るぞ、って問題じゃない?
0258デフォルトの名無しさん
2008/10/21(火) 01:46:00場所によって(特定のクラスのコンストラクタとか)
vswprint.cでBuffer too smallとエラーがでるのね。
どこが悪いの?
0259デフォルトの名無しさん
2008/10/21(火) 02:10:03VC6がでてから何年もたってるからFlushとかうまく表示できないんだろうと
思ってたけど、普通に表示できるけど、VC6のインターネット関連のコンポーネントって
今のPC上のIEエンジンがつかわれるのかな?VC6時代のやつじゃなくて。
0260デフォルトの名無しさん
2008/10/21(火) 03:22:520261デフォルトの名無しさん
2008/10/21(火) 10:13:290262デフォルトの名無しさん
2008/10/21(火) 12:51:150263デフォルトの名無しさん
2008/10/21(火) 17:37:55VC6にそんな機能は全くない。間違いなくIEコンポーネント使っているだけ。
HTTPでファイルをダウンロードしたり、HTML/CSSに従ってレイアウトしたり、
JavaScriptのインタプリタ作ったり、Flashを呼び出したりするコードを書いた覚えなんて一切ないだろ。
0264デフォルトの名無しさん
2008/10/21(火) 18:04:04VC6当時はなかったIE7で動作するのが不思議に思ったって事でしょ
0265259
2008/10/21(火) 19:34:14そうなんです、>>264さん。VC6にIEコンポーネントが付いてるとおもったんです。
初心者用の本の通りに作ったんです。ですから、あっという間にブラウザができて
コードなんてほとんど書いてなかったから、なにがどうなってどういうブラウザができたとか
さっぱりわからんのです。でもわかりました。>>263さんのいうとおりIEコンポーネントを使ってるということですね。
お二方どうもありがとうございました。おかげさまで心よく理解する事ができました。
0266デフォルトの名無しさん
2008/10/21(火) 23:28:540267デフォルトの名無しさん
2008/10/22(水) 00:10:510268デフォルトの名無しさん
2008/10/22(水) 00:15:180269デフォルトの名無しさん
2008/10/22(水) 09:44:55for (int i = 0; i < N; i++){
fscanf(fp,"%lf",&data[i]);
if( data[0] < 0 ) break;
}
}
読み込むテキストはN列あります。
5.2 12.2 124.7
15.2 52.2 24.7
25.2 92.2 324.7
-1.0
3.2 12.2 124.7
-1.0は区切りのためにいれてるんですが、-1.0が読み込まれたら飛ばして次の行にいくってプログラムを書いたつもりなんですが、
-1が読み込まれると無限ループになってしまいます。解決策をおねがいします・・・
0270デフォルトの名無しさん
2008/10/22(水) 09:55:160271デフォルトの名無しさん
2008/10/22(水) 09:59:220272デフォルトの名無しさん
2008/10/22(水) 10:21:48feofの使い方間違ってる
0273デフォルトの名無しさん
2008/10/22(水) 10:23:06data[0]じゃなくてdata[i]じゃないの?
0274デフォルトの名無しさん
2008/10/22(水) 10:28:27-1.0が書いてあるのは1列目なんで0でいいかなと
0275デフォルトの名無しさん
2008/10/22(水) 10:29:45while ( !feof(fp) ){
for (int i = 0; i < N; i++){
fscanf(fp,"%lf",&data[i]);
if( data[0] < 0 ) break;
function(data);
}
}
1行ごとに読み、それを関数に渡して処理。そして次の行を読むっていうのをEOFまでやってるんです。
使い方どう違いますか?
0276デフォルトの名無しさん
2008/10/22(水) 10:31:13flag =0;
for (int i = 0; i < N; i++){
fscanf(fp,"%lf",&data[i]);
if( data[0] < 0 ) }
flag = 1;
break;
}
}
if(flag !=1 )function(data);
}
こうでした。すいません
0277デフォルトの名無しさん
2008/10/22(水) 10:31:18これで3つの数値が data[0]、data[1]、data[2]に入ると思ってる?
scanfaの仕様をみなおしてみたほうがいいよ
0278デフォルトの名無しさん
2008/10/22(水) 10:32:03while ( !feof(fp) ){
flag =0;
for (int i = 0; i < N; i++){
fscanf(fp,"%lf",&data[i]);
if( data[0] < 0 ) {
flag = 1;
break;
}
}
if(flag !=1 )function(data);
}
です
0279デフォルトの名無しさん
2008/10/22(水) 10:33:39-1.0の意図的な区切りが出てくるまでは読めてます。for文でまわしてるので大丈夫だと思ってましたが・・・
-1.0を付加してるのはtxtファイルのメンテナンスをしやすくするためです
0280デフォルトの名無しさん
2008/10/22(水) 10:35:06改行だけでよかろ?
0281デフォルトの名無しさん
2008/10/22(水) 10:36:35-1.0のあとにその上のデータを作成した方法を記載しているのです。
-1.0 pattern a
とかなってます。言ってなくて申し訳ありません。
0282デフォルトの名無しさん
2008/10/22(水) 10:42:59順を追って動作一つ一つ追ってみ?
0283デフォルトの名無しさん
2008/10/22(水) 10:46:22eofじゃなかったら
for文でその行のN個のデータをN次元配列に格納。関数に渡す。
eofじゃなかったら ・・・・
eofだったらwhileから抜ける
だと認識してるんですが・・・
0284デフォルトの名無しさん
2008/10/22(水) 10:55:22feofはfprintfが最期の行読み込んだ後使うと真を返すんじゃなく
fprintfが最期の行読み込んだ後もう一回fprintfを使った後feof使うと真を返すんだよ
0285デフォルトの名無しさん
2008/10/22(水) 10:56:020286デフォルトの名無しさん
2008/10/22(水) 10:56:480287デフォルトの名無しさん
2008/10/22(水) 11:15:530288デフォルトの名無しさん
2008/10/22(水) 11:19:500289デフォルトの名無しさん
2008/10/22(水) 11:30:01fscanf(fp,"%lf",&data[i]);
printf("%lf",data);
if( data[0] < 0 ) {
みたいに実際に読んだデータを表示してみたら。
1ラインづつ読んで切り分けてatofでも使って変換、頭に-1.0があったら飛ばすでいいのでは。
0290デフォルトの名無しさん
2008/10/22(水) 11:32:190291デフォルトの名無しさん
2008/10/22(水) 11:35:070292デフォルトの名無しさん
2008/10/22(水) 11:39:490293デフォルトの名無しさん
2008/10/22(水) 11:42:410294デフォルトの名無しさん
2008/10/22(水) 11:49:220295デフォルトの名無しさん
2008/10/22(水) 11:50:520296デフォルトの名無しさん
2008/10/22(水) 17:20:100297デフォルトの名無しさん
2008/10/22(水) 19:31:440298デフォルトの名無しさん
2008/10/22(水) 20:24:050299デフォルトの名無しさん
2008/10/22(水) 20:24:47y = ax + bって入力したら
y'= aって返ってくること?
そんなもんねーよ
0300デフォルトの名無しさん
2008/10/22(水) 20:34:470301デフォルトの名無しさん
2008/10/22(水) 20:36:34だから不可能ではないんです。
C言語でフリーのやつはないものかと。
0302デフォルトの名無しさん
2008/10/22(水) 20:39:030303デフォルトの名無しさん
2008/10/22(水) 20:39:39うそ、あんの?
教えてちょーだい
0304デフォルトの名無しさん
2008/10/22(水) 20:45:56任意の関数の微分も出来るやつはないものか
0305デフォルトの名無しさん
2008/10/22(水) 20:49:03ごめん。無料ではしらない。
>>299が有料だろうと無料だろうとそんなもんはないし、作れないよ
みたいな風に見えたからさ
0306デフォルトの名無しさん
2008/10/22(水) 20:57:03でかかったら仮想メモリとかにおかれたり
0307デフォルトの名無しさん
2008/10/22(水) 21:02:240308デフォルトの名無しさん
2008/10/22(水) 21:57:580309デフォルトの名無しさん
2008/10/22(水) 21:59:390310デフォルトの名無しさん
2008/10/22(水) 21:59:410311デフォルトの名無しさん
2008/10/22(水) 22:03:400312デフォルトの名無しさん
2008/10/22(水) 23:23:12double型とかならば、
ary.push_back( 5.0 ); とかで末尾に入れれると思うんですが
0313デフォルトの名無しさん
2008/10/22(水) 23:26:35intとかdoubleとかの変数と同じだよ。
0314デフォルトの名無しさん
2008/10/22(水) 23:26:41構造体にコンストラクタを付ける
0315デフォルトの名無しさん
2008/10/22(水) 23:28:210316デフォルトの名無しさん
2008/10/22(水) 23:29:19初期化するためのものではないのですか?
0317デフォルトの名無しさん
2008/10/22(水) 23:29:580318デフォルトの名無しさん
2008/10/22(水) 23:36:46vec.push_back(hoge);
でいいだろ。
0319デフォルトの名無しさん
2008/10/22(水) 23:39:33どういうことですか?動的配列を使いたいのですが・・・
0320デフォルトの名無しさん
2008/10/22(水) 23:53:11「構造体をvectorに」のタイポかと勘違いしたよ。
「構造体のvectorに」って、
struct Hohe {
vector<T> vec;
};
ってこと?
0321デフォルトの名無しさん
2008/10/22(水) 23:53:34この場合は初期化のためというより一時オブジェクトを
利用したいから付ける
0322デフォルトの名無しさん
2008/10/23(木) 00:01:32double data;
cahr name[256];
}DATA;
int main(){
std::vector<DATA> hoge<100>;
}
このhogeにデータを入れたいってことです
0323デフォルトの名無しさん
2008/10/23(木) 00:02:06typedef struct{
double data;
char name[256];
}DATA;
int main(){
std::vector<DATA> hoge(100);
}
こうでした・・・
0324デフォルトの名無しさん
2008/10/23(木) 00:03:41だから、
DATA d;
hoge.push_back(d);
でいいだろ。
0325デフォルトの名無しさん
2008/10/23(木) 00:06:52すいません。理解できないです。
hogeの末尾に double→1.0 char→"hoge"を入れる場合にはどうするんですか
0326デフォルトの名無しさん
2008/10/23(木) 00:17:17お前あちこちのスレにマルチしてるだろ
struct DATA {
double data;
char name[256];
DATA(double d = 0.0, char* str = "") : data(d) {
std::strcpy(name, str);
}
};
int main()
{
std::vector<DATA> hoge(100);
hoge.push_back(DATA(1.0, "hoge"));
}
0327デフォルトの名無しさん
2008/10/23(木) 02:10:13hoge.back().data = 1.0;
std::strcpy( hoge.back().name, "hoge" );
とか
0328デフォルトの名無しさん
2008/10/23(木) 04:36:520329デフォルトの名無しさん
2008/10/23(木) 05:57:39以下のようなプログラムを書きましたが、終了しません。
>cat meso
123456
---------------------------------------------
FILE *f;
buff[256];
char *s;
f = fopen("meso","r");
while((s = hogehoge(f,buff)) != NULL){
printf("%s¥n",s);
}
fclose(f);
exit(0);
}
char *hogehoge(FILE *f, char *buff){
int c = 0;
int at = 0;
while((c = fgetc(f)) != EOF){
buff[at++] =c;
}
buff[at]='¥0';
return buff;
}
どのようにすれば、このプログラムを終了させる事が出来るのでしょうか?
0330デフォルトの名無しさん
2008/10/23(木) 06:04:58hogehogeのコードじゃnullが帰ることは決してないぞ。
0331デフォルトの名無しさん
2008/10/23(木) 07:15:51どのようにダメだったかを書いて
ただし、ポインタを持ってる構造体の場合は
コピーコンストラクタとoperator=をオーバーロードした方が良い。
これ以降は自分で勉強しな
0332デフォルトの名無しさん
2008/10/23(木) 07:26:18#include<stdio.h>
void hogehoge(FILE* f, char* buf);
#define BUF_LEN 256
int main() {
FILE *f;
char buf[BUF_LEN];
f = fopen("a.out.c","r");
hogehoge(f, buf);
printf("%s\n", buf);
fclose(f);
return 0;
}
void hogehoge(FILE *f, char *buf){
int c = 0;
int at = 0;
while((c = fgetc(f)) != EOF && at < BUF_LEN-1){
buf[at++] = c;
}
buf[at] = '\0';
return;
}
0333デフォルトの名無しさん
2008/10/23(木) 12:38:130334デフォルトの名無しさん
2008/10/23(木) 12:44:42char c[4] = "abc";
s = c;
でおk
0335デフォルトの名無しさん
2008/10/23(木) 13:20:140336デフォルトの名無しさん
2008/10/23(木) 13:27:020337デフォルトの名無しさん
2008/10/23(木) 13:28:19fprintfのC++版ってあるんですか?
0338デフォルトの名無しさん
2008/10/23(木) 13:33:170339デフォルトの名無しさん
2008/10/23(木) 13:33:360340デフォルトの名無しさん
2008/10/23(木) 13:36:27<iosteam>でも使えるぞ
0341デフォルトの名無しさん
2008/10/23(木) 14:45:590342デフォルトの名無しさん
2008/10/23(木) 15:00:21平方根はもとめないといけないんだけど(ユークリッド距離)なんかいい方法ないですか?
0343デフォルトの名無しさん
2008/10/23(木) 15:08:21くらいしか思いつかないなあ
0344デフォルトの名無しさん
2008/10/23(木) 15:09:250345デフォルトの名無しさん
2008/10/23(木) 15:40:50sqrtをなるべく使わないようにする
ループの回数を減らせる方法がないか考える
sqrtの結果をキャッシュする
0346デフォルトの名無しさん
2008/10/23(木) 16:08:41インラインアセンブラでSSE2のsqrtsdでも使うとか。
それ位しか思いつかない
0347デフォルトの名無しさん
2008/10/23(木) 16:09:19スレッドを4つ起動すれば速いな
0348デフォルトの名無しさん
2008/10/23(木) 16:30:11ビルドした時間を取得する マクロ? ってありますか?
0349デフォルトの名無しさん
2008/10/23(木) 18:24:30ビルド時にDオプションでどうにかすればいいんでない?
0350デフォルトの名無しさん
2008/10/23(木) 18:40:580351デフォルトの名無しさん
2008/10/23(木) 18:43:480352デフォルトの名無しさん
2008/10/23(木) 18:52:110353デフォルトの名無しさん
2008/10/23(木) 18:54:360354デフォルトの名無しさん
2008/10/23(木) 19:00:270355デフォルトの名無しさん
2008/10/23(木) 19:12:25fstream fs("filename.txt", fstream::in | fstream::out | fstream::app);
とかは?
0356デフォルトの名無しさん
2008/10/23(木) 19:14:39const char tbl[ 4 ][ 16 ]=
{
"spring",
"summer",
"auturmn",
"winter",
};
tbl.h
const char tbl[ 4 ][ 16 ];
test.cpp
#include "tbl.h"
void func()
{
printf("%s\n", tbl[ 0 ]);
}
C++でこれって出来ないの?
実体が無いって言われるんだけど。
0357デフォルトの名無しさん
2008/10/23(木) 19:14:54if(!ofs.is_open()){
cout << "ファイル開けない " <<endl;
exit(1);
}
ifstream ifs("file.txt");
if(!ifs.is_open()) {
exit(1);
}
こうしたんですが、問題ありますかね
0358デフォルトの名無しさん
2008/10/23(木) 19:19:38externを付ける
0359デフォルトの名無しさん
2008/10/23(木) 19:25:07おおーありがとー。
externつけたけど、今度はconstが初期化されていないって言われる。
constを外すと複数定義されているって言われる。
0360デフォルトの名無しさん
2008/10/23(木) 19:28:570361デフォルトの名無しさん
2008/10/23(木) 19:31:51ヘッダファイルが無いとtbl[]が無いって言われる。
cppをincludeしたら行けたけど、C++はcppをincludeするのが普通なの?
0362デフォルトの名無しさん
2008/10/23(木) 19:32:52>> Makefile
test: test.o tbl.o
g++ test.o tbl.o -o test
clean:
rm *.o
>> tbl.cpp
#include "tbl.h"
const char tbl[ 4 ][ 16 ]=
{
"spring",
"summer",
"auturmn",
"winter",
};
>> tbl.h
extern const char tbl[ 4 ][ 16 ];
>> test.cpp
#include <cstdio>
#include "tbl.h"
int main(void)
{
printf("%s\n", tbl[ 0 ]);
}
0363デフォルトの名無しさん
2008/10/23(木) 19:38:16うーん。それだとconstが初期化されてないって言われるんだよねぇ。
error: uninitialized const 'Tbl'
って出る。
0364デフォルトの名無しさん
2008/10/23(木) 19:44:17debug用に切っていたマクロをincludeしていなくて、定義されていないマクロの中に実体を定義してた。
しょうもない質問に、ありがとうございました。
0365デフォルトの名無しさん
2008/10/23(木) 19:49:39それにしてみたら、書き込まれないんですが・・・
0366デフォルトの名無しさん
2008/10/23(木) 20:03:560367デフォルトの名無しさん
2008/10/23(木) 20:07:54fstreamインクルードしてます
0368デフォルトの名無しさん
2008/10/23(木) 20:09:530369デフォルトの名無しさん
2008/10/23(木) 20:11:27fs >> data;
こうやってるんですが書き込まれてないんですよね・・・
0370デフォルトの名無しさん
2008/10/23(木) 20:12:370371デフォルトの名無しさん
2008/10/23(木) 20:29:10例
std::ofstream ofs( "test.txt", std::ios::out | std::ios::app );
http://www.geocities.jp/ky_webid/cpp/library/033.html
0372デフォルトの名無しさん
2008/10/23(木) 20:41:310373デフォルトの名無しさん
2008/10/23(木) 20:42:35Copy On Writeありそうだからまずいんじゃね?
0374デフォルトの名無しさん
2008/10/23(木) 20:43:06std::string s;の場合、&s[0]はchar*の先頭アドレスと同じように扱える
0375デフォルトの名無しさん
2008/10/23(木) 20:45:11読み込みはどうするんですか?
0376デフォルトの名無しさん
2008/10/23(木) 20:46:040377デフォルトの名無しさん
2008/10/23(木) 20:46:59std::fstream fp( "test.txt", std::ios::in |std::ios::out | std::ios::app );
0378デフォルトの名無しさん
2008/10/23(木) 20:49:09うーん。かきこまれないです
0379デフォルトの名無しさん
2008/10/23(木) 20:52:210380デフォルトの名無しさん
2008/10/23(木) 21:07:16ZeroMemoryしなくてもresizeとかコピーされない手段を使えば、初めから0で埋まっているぞ。
0381デフォルトの名無しさん
2008/10/23(木) 21:12:53#include <fstream>
#include <string>
int main()
{
std::fstream fp( "test.txt", std::ios::in |std::ios::out | std::ios::app);
fp << "12345\n";
fp.seekg(0, std::ios::beg);
std::string s;
fp >> s;
fp << s;
}
0382デフォルトの名無しさん
2008/10/23(木) 21:41:14using namespace std;
class Kitty{
int X;
public:
int & getX();
} obj ;
int & Kitty::getX() {
return X;
}
int main() {
obj.getX() = 10;
cout << obj.getX();
return 0;
}
のobj.getX() = 10が何をしてるのかわかりません。
10を代入してるのですか?
関数に数値を代入することってあるのでしょうか?
0383デフォルトの名無しさん
2008/10/23(木) 21:47:23関数が参照型を返せばそういうこともできるというわけ。
実際使っているとこはあまり見ないけどな。
0384デフォルトの名無しさん
2008/10/23(木) 21:48:27関数に代入するのではなく、戻り値であるintへの参照に代入しているのです
0385デフォルトの名無しさん
2008/10/23(木) 22:09:37struct data{
char word[81];
int zok;
int ret;
};
data DATA [255];
void main(){
FILE *fp ;
fp = fopen( "Library.dat" , "wb") ;
/* Library.dat の中身を DATA[255]にコピーする */
DATA[12].zok = 8;
DATA[12].ret = 90;
strcpy(DATA[0].word,"hogehoge");
/* Library.dat に DATA[255]の中身すべてを書き込む */
fclose(fp);
}
以上のような事を行いたいのですがコメント文の中身をどのように
すればよいのかをご教授ください。
0386デフォルトの名無しさん
2008/10/23(木) 22:14:230387デフォルトの名無しさん
2008/10/23(木) 22:18:59ぐぐって見ましたが、確かにこれだとうまくできそうです。
ありがとん
0388デフォルトの名無しさん
2008/10/23(木) 22:31:39filename.c_str()で渡したんですが、const char *' から 'char *' に変換できませんとコンパイルとおらないんですが、どうやるんでしょう?
0389デフォルトの名無しさん
2008/10/23(木) 22:36:57char tmp[256];
strcpy(tmp, filename.c_str());
みたいにテンポラリにコピーしてから渡すとか。
0390デフォルトの名無しさん
2008/10/23(木) 22:38:36にしとけよ
0391デフォルトの名無しさん
2008/10/23(木) 22:47:08引数の型を const char * に変える
0392デフォルトの名無しさん
2008/10/23(木) 23:02:32『error C2440: '=' : 'LPVOID' から 'data *' に変換できません。』
と言うエラーが出てしまうのですが、何が間違っているのでしょうか?
struct data{
DATA lib[255];
};
data* mydata ;
int main(){
int i =0;
int *p = NULL;
HANDLE h;
HANDLE h2;
int tmp = 0;
h = CreateFile(
"memorymapping.dat" ,
GENERIC_READ | GENERIC_WRITE ,
FILE_SHARE_READ | FILE_SHARE_WRITE ,
NULL ,
OPEN_ALWAYS ,
FILE_ATTRIBUTE_NORMAL ,
NULL
);
printf("HANDLE = %ld, INVALID_HANDLE_VALUE = %ld\n", h, INVALID_HANDLE_VALUE );
h2 = CreateFileMapping(h, NULL, PAGE_READWRITE, 0, sizeof(data), "mmap");
mydata = MapViewOfFile(h2, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(data));/*★*/
/*以下略*/
0393デフォルトの名無しさん
2008/10/23(木) 23:03:330394デフォルトの名無しさん
2008/10/23(木) 23:03:460395デフォルトの名無しさん
2008/10/23(木) 23:05:260396デフォルトの名無しさん
2008/10/23(木) 23:06:48こんな初歩で失敗していたとはお恥ずかしい限りです・・
0397デフォルトの名無しさん
2008/10/23(木) 23:07:13>>390
>>391
できました!
0398デフォルトの名無しさん
2008/10/23(木) 23:07:14fread(data, sizeof data[0], sizeof data / sizeof data[0], fp);
fwrite(data, sizeof data[0], sizeof data / sizeof data[0], fp);
0399デフォルトの名無しさん
2008/10/23(木) 23:15:59オープンがちょっとめんどいが、読み書きのタイミングを自分で決める必要なしで
使うときは便利
0400デフォルトの名無しさん
2008/10/24(金) 00:14:49とすればコンパイルとおるんですが
string filename;
filename = "aa.txt";
ifstream ifs(filename);のコンパイルが通りません。なぜでしょうか
0401デフォルトの名無しさん
2008/10/24(金) 00:15:420402デフォルトの名無しさん
2008/10/24(金) 00:25:130403デフォルトの名無しさん
2008/10/24(金) 00:42:130404デフォルトの名無しさん
2008/10/24(金) 01:17:38USERTYPE.DATでググれ。
0405デフォルトの名無しさん
2008/10/24(金) 09:20:17std::stringの連続性は保証されていないからまずいんじゃないの。
0406デフォルトの名無しさん
2008/10/24(金) 11:11:260407デフォルトの名無しさん
2008/10/24(金) 11:14:230408デフォルトの名無しさん
2008/10/24(金) 11:18:160409デフォルトの名無しさん
2008/10/24(金) 11:24:27stringをchar型の引数へわたすにはどうすりゃいいんだ? c.strじゃだめだし
0410デフォルトの名無しさん
2008/10/24(金) 11:34:490411デフォルトの名無しさん
2008/10/24(金) 11:35:450412デフォルトの名無しさん
2008/10/24(金) 11:39:53そうでないなら、直接渡すことは諦めてvector<char>でもchar[]でも使って中継すればいいだけだし。
0413デフォルトの名無しさん
2008/10/24(金) 12:07:170414デフォルトの名無しさん
2008/10/24(金) 12:40:450415デフォルトの名無しさん
2008/10/24(金) 13:11:41char file[256]とかに入っているファイル名の.の前(拡張子の前までの文字列を別のchar型の配列に入れたいんですが、どうしたら
いいやりかたありますか?
0416デフォルトの名無しさん
2008/10/24(金) 13:27:030417デフォルトの名無しさん
2008/10/24(金) 13:47:110418デフォルトの名無しさん
2008/10/24(金) 13:57:26data\\hoge.txt
みたいなファイル名の\の前を消そうとおもって
p = strrchr(filename,'\');
とするんですが、\がつかえないみたいでこまってます
0419デフォルトの名無しさん
2008/10/24(金) 14:02:480420デフォルトの名無しさん
2008/10/24(金) 14:09:25引っぺがす・・?
0421デフォルトの名無しさん
2008/10/24(金) 15:30:41何がご不満でも?
>>417
そっちも同じ要領でできるだろ。寧ろ簡単だ。
例えばこんな感じ。
--
char foo[] = "/foo/bar/fooz.foo.bar";
char ext[10];
char * dot = strrchr(foo, '.');
if (dot == NULL) ...; // dotが見つからない
if (dot == foo) ...; // 先頭がdot
if (foo + strlen(foo) >= dot + sizeof(ext)) ...; // 拡張子が想定より長い
strcpy(ext, dot);
0422デフォルトの名無しさん
2008/10/24(金) 15:33:53>416と>421を元に書いてみた。
char foo[] = "/foo/bar/fooz.foo.bar";
char * dot = strrchr(foo, '.');
if (dot == NULL) ...; // dotが見つからない
if (dot == foo) ...; // 先頭がdot
char baseName[100];
if (dot - foo >= sizeof(baseName) ...; // ベースネームが(ry
sprintf(baseName, "%.*s", dot - foo, foo);
0423デフォルトの名無しさん
2008/10/24(金) 15:54:350424デフォルトの名無しさん
2008/10/24(金) 15:57:460425デフォルトの名無しさん
2008/10/24(金) 15:59:13ifs >> 変数;
}
こんな感じですが、最後の行が2回読まれます
0426デフォルトの名無しさん
2008/10/24(金) 16:02:32eof()は自らはstreamを云々する関数ではないので、読み込んだ結果終端かどうかしか返さない。
0427デフォルトの名無しさん
2008/10/24(金) 16:07:130428デフォルトの名無しさん
2008/10/24(金) 16:15:37BASICのEOFと間違えてるだろ
do {
ifs >> 変数;
} while (ifs);
C/C++はあくまで読んだ後でないとEOFかどうか検出できない
0429デフォルトの名無しさん
2008/10/24(金) 16:18:06とか。
0430デフォルトの名無しさん
2008/10/24(金) 17:13:320431デフォルトの名無しさん
2008/10/24(金) 17:17:250432デフォルトの名無しさん
2008/10/24(金) 17:25:20それでも2回よまれました・・・
0433デフォルトの名無しさん
2008/10/24(金) 17:26:320434デフォルトの名無しさん
2008/10/24(金) 17:36:37for(;;){
ifs >> 変数;
if (ifs.eof()) break;
変数を使って何かする;
}
0435デフォルトの名無しさん
2008/10/24(金) 17:46:49輸出依存企業ってのは
国内で労働者を奴隷のように扱って海外に製品輸出してる企業だろ
倒産していいよそんなのは、むしろするべき。
0436デフォルトの名無しさん
2008/10/24(金) 18:04:21その考え方はおかしいよ
海外で製品が売れることで日本に金が流れてくるんじゃん
輸入ばっかの企業のほうがダメ
0437デフォルトの名無しさん
2008/10/24(金) 18:52:05だから2回読むのは正常なんだって
問題は読んだ後にEOFになっているかどうかを調べろと言ってるの
0438デフォルトの名無しさん
2008/10/24(金) 18:53:02なりすましての嫌がらせも横行してるから
どちら側の仕業なのかわからんがね。
いずれにしてもスレ違いの話に反応するなよ。
0439デフォルトの名無しさん
2008/10/24(金) 18:54:29ああ言い忘れた
読んでその直後EOFになっていたら読んだ値は捨てる事。
読んだ直後EOFでなければ読んだ値は有効。
0440デフォルトの名無しさん
2008/10/24(金) 19:00:180441デフォルトの名無しさん
2008/10/24(金) 19:16:480442デフォルトの名無しさん
2008/10/24(金) 19:18:55いやもちろんそうだが、C++はstd::ios::failbitやstd::ios..eofbitが
立ってしまうと読み込み書き出しの動作を止めてしまうので、
変数の値が変わらず、読んだように見える、と言いたかった。
C言語ならばfseek()でEOFマーカーをクリアできるが、C++の場合は
明示的にストリームに対しclear()などを行ってこれらのビットを
降ろしてやらなければ次の読み書きが一切出来ない。
0443デフォルトの名無しさん
2008/10/24(金) 19:24:04ここら辺。eof()を拾うのは正しい処理ではない。
ストリームに対して void* operator() を見るのが正解。
0444デフォルトの名無しさん
2008/10/24(金) 19:26:33C++はややこしい決まり事が無数にあるのでやっぱり本か規格書を
読みながらでないと間違えがちだな。
0445デフォルトの名無しさん
2008/10/24(金) 21:05:17int main()
{
std::ifstream ifs("read.txt");
for (int i = 0; i < 2; i++) {
int i;
while (ifs >> i) {
std::cout << i << ' ';
}
std::cout << std::endl;
ifs.clear();
ifs.seekg(0, std::ios::beg);
}
for (int i = 0; i < 2; i++) {
int i;
while (true) {
ifs >> i;
if (ifs.eof())
break;
std::cout << i << ' ';
}
std::cout << std::endl;
ifs.clear();
ifs.seekg(0, std::ios::beg);
}
}
0446デフォルトの名無しさん
2008/10/24(金) 22:00:56文字毎に格納するデータを各々書いていくしかないでしょうか?
0447デフォルトの名無しさん
2008/10/24(金) 22:02:56sscanf
0448デフォルトの名無しさん
2008/10/24(金) 23:07:42の&は参照を表してるんですか?
0449デフォルトの名無しさん
2008/10/24(金) 23:32:570450デフォルトの名無しさん
2008/10/24(金) 23:35:19起動させなくても内容が変更される恐れがないので
サイズの大きなクラスなど渡す時に便利
0451デフォルトの名無しさん
2008/10/25(土) 00:02:190452デフォルトの名無しさん
2008/10/25(土) 00:07:33参照だと見た目、値渡しでコールしてるように見える。
ポインタに比べて、無効な値が入ってきにくくなる。
0453デフォルトの名無しさん
2008/10/25(土) 00:08:190454デフォルトの名無しさん
2008/10/25(土) 00:08:410455デフォルトの名無しさん
2008/10/25(土) 00:09:180456デフォルトの名無しさん
2008/10/25(土) 07:37:11ありがとうございます!
0457デフォルトの名無しさん
2008/10/25(土) 11:12:01このプログラムなんですが
unicodeを使用していると_T("")の部分が正常に表示されません。
マルチバイトなら出来るのですが、_T("")は両方に使えると思っていたのですが例外はあるのでしょうか?
あとunicodeとマルチバイトの差はコンパイル時に出るだけだと思って良いでしょうか?
コンパイル時にunidodeかマルチバイトを設定しておけば、どのような環境下でexeファイルを実行しても
内部ではコンパイル時に設定された文字コードが扱われる〜ような。
0458デフォルトの名無しさん
2008/10/25(土) 11:16:32Unicodeコンパイルすれば内部コードがUnicodeになって、Unicode対応OSでないと動かない。
0459デフォルトの名無しさん
2008/10/25(土) 11:36:48前半だが、
ostream& operator<<(ostream&, LPCTSTR)
みたいなのを自分で定義するか、
単にwcoutに書き込むんだな。
UNICODEや_UNICODEの定義は、TCHARがcharになるかwchar_tになるかの違いなので、
当たり前だが生成されるバイナリが全然違う。
勿論TCHARに一切タッチしないなら関係無い話だが、
あんたがAnsi版、Unicode版を直接指定しないでAPIを使っているなら、
もしくはMFC/ATL/WTLのようなものを使っているなら、無関係では
いられないだろう。
0460デフォルトの名無しさん
2008/10/25(土) 11:52:28typedef wstring _tstring;
#else
typedef string _tstring;
#endif
0461デフォルトの名無しさん
2008/10/25(土) 11:54:19MFC/ATL/WTLは糞
0462デフォルトの名無しさん
2008/10/25(土) 11:56:540463デフォルトの名無しさん
2008/10/25(土) 21:26:59typedef std::basic_string<TCHAR> _tstring;でいいじゃない。
っていうか下線で始まるのはダメだろ。
>>461
VC++ 7あたりからMFC/ATLのCStringはテンプレート化された。
0464デフォルトの名無しさん
2008/10/25(土) 21:42:00ん?CStringはCString<TCHAR, StrTraitATL<TCHAR> >
とかだから、結局TCHARマクロ依存だし
Window系のクラスとかが扱うのはLPCTSTRだのCStringだのだから
これまたマクロだろ?
APIと違ってTCHARマクロを避ける方法が無いどころか
全面的に依存してるわけじゃん
0465デフォルトの名無しさん
2008/10/25(土) 21:45:240466デフォルトの名無しさん
2008/10/25(土) 21:46:360467デフォルトの名無しさん
2008/10/25(土) 21:46:56MFCだのATLだののクラスのインタフェースがCStringを要求しているのにか?
APIはA版とW版の両方のインタフェースが提供されている
MFCやWTLは、T版のインタフェースしか提供していない
んだよ
0468デフォルトの名無しさん
2008/10/25(土) 22:06:470469デフォルトの名無しさん
2008/10/25(土) 22:07:29いや、そういう話ではないのは分かるけど、書かずにはいられなかった。
>>467
そういう問題ならそうといってよ、勘違いするじゃない。
0470デフォルトの名無しさん
2008/10/25(土) 22:10:36CreateWindowってメンバ関数作ろうとしてハマった俺ガイル
0471デフォルトの名無しさん
2008/10/25(土) 22:12:060472デフォルトの名無しさん
2008/10/25(土) 22:14:49パラメーター見ようと、
マウス乗せても、hogeW/HogeAのdefineですぅ、としか表示されない。
0473デフォルトの名無しさん
2008/10/25(土) 22:20:47AやらWに決めうちしたほうが、かえってトラブルなくて安全になりそう。
0474デフォルトの名無しさん
2008/10/25(土) 22:22:18ロジック自体が共有できんことが多いのだからな
それなのにマクロ一発で切り替えるという発想自体が馬鹿
0475デフォルトの名無しさん
2008/10/25(土) 22:24:580476デフォルトの名無しさん
2008/10/25(土) 22:30:30Janeみたいに多段ポップアップなら良いのにな
0477デフォルトの名無しさん
2008/10/25(土) 22:31:35.NET Frameworkに同名のメンバがあるやつでそういう問題が起こるからって、
最近のSDKではMC++やC++/CLIでコンパイルすると
マクロをやめてインライン関数で定義するようになっている。
0478デフォルトの名無しさん
2008/10/25(土) 22:52:55配列の要素数は
奇数がいいのですか?
偶数がいいのですか?
2の倍数がよいのですか?
素数がよいのですか?
0479デフォルトの名無しさん
2008/10/25(土) 22:56:410480デフォルトの名無しさん
2008/10/25(土) 22:58:480481デフォルトの名無しさん
2008/10/25(土) 23:02:28使う分だけ確保すればいいんじゃね?
0482デフォルトの名無しさん
2008/10/25(土) 23:06:41void* operator new(size_t size, void* buff){ return buff; }
を追加したクラスに対して、通常のnewを使用するにはどうすればよいのでしょうか?
0483デフォルトの名無しさん
2008/10/25(土) 23:09:010484デフォルトの名無しさん
2008/10/25(土) 23:10:050485デフォルトの名無しさん
2008/10/25(土) 23:17:21ありがとうございます。単純なことだったんですね
>484
すみません、具体的にどうするのか、想像がつきません
0487デフォルトの名無しさん
2008/10/25(土) 23:47:53要素数はパフォーマンスと関係ないんじゃね?
0488デフォルトの名無しさん
2008/10/25(土) 23:50:120489デフォルトの名無しさん
2008/10/26(日) 01:08:16大概のC/C++処理系はパフォーマンスが出るように設計されて
いるので気にするな
0490デフォルトの名無しさん
2008/10/26(日) 01:45:570491デフォルトの名無しさん
2008/10/26(日) 01:54:420492デフォルトの名無しさん
2008/10/26(日) 02:28:10これで充分?
0493デフォルトの名無しさん
2008/10/26(日) 02:33:48だいたい使えると思う。
統合環境の操作方法とか、言語の説明以外のところはつかえない可能性が高い。
0494[email protected] rudaichi
2008/10/26(日) 06:40:270495デフォルトの名無しさん
2008/10/26(日) 06:55:56んで、hello worldを作ってみた
文字の表示と数字の表示、xやyの変数に代入する事を覚えた
次、何したらいい?
0496デフォルトの名無しさん
2008/10/26(日) 07:15:560497デフォルトの名無しさん
2008/10/26(日) 08:21:22外出
0498デフォルトの名無しさん
2008/10/26(日) 08:28:20そういう事は自分で調べろっていう戒めの意味を込めて言ってるんだよな
お前らのその素直でない親心・・・嫌いじゃないぜ
とりあえず、自分で頑張ってみるわ
0499デフォルトの名無しさん
2008/10/26(日) 08:42:32strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。
調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。
それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。
strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。
strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。
0500デフォルトの名無しさん
2008/10/26(日) 10:26:15参考 URL
http://msdn.microsoft.com/ja-jp/library/td1esda9(VS.80).aspx
パラメータ検証 ( ポインタの妥当性、サイズなど ) の実装が必要。面倒そうだね。
ソースの規模にもよるが、単純に strcpy_s の第二引数を捨てて、strcpy に置換
した方が楽かもしれない。
0501デフォルトの名無しさん
2008/10/26(日) 12:53:440502デフォルトの名無しさん
2008/10/26(日) 12:54:51長門がCで書いてたように見えたか?
0503デフォルトの名無しさん
2008/10/26(日) 12:57:040504デフォルトの名無しさん
2008/10/26(日) 15:20:05こらこら、曲解するでない
入門書読破はプログラム覚えるにあたって健全な意見
外出はさらに健全な意見
人間的な意味で
0505デフォルトの名無しさん
2008/10/26(日) 15:22:39>>500をやるなら
#define strcpy_s(a,b,c) strcpy(a,c)
でどうかな。戻り値使ってないならいけると思う。
0506デフォルトの名無しさん
2008/10/26(日) 16:33:06コンソールからコンパイルする方法がわかりません。
(IDEを使うよりも最初はコンソールからやった方がいいと聞いたので、、、、)
どなたかお願いします。
0507デフォルトの名無しさん
2008/10/26(日) 16:46:08マジレスすると、入門書を買う金すら捻出できないんだ。
これ以上生活費削ると、来月の家賃を払えない可能性があって云々。
とりあえず派遣に登録して、仕事の紹介受けてるから
そこで働ければ、安定はしそうだけど今はヤバイ。
外出は買い物とか家賃振込みとかで
嫌でもしなきゃいけないから、そこはモーマンタイ。
図書館に行って、それっぽい本を探してみたが
用語辞典ばかりで、今の自分には合わなさそうなのばっかだった。
まぁそれなりに頑張ってみるわ。
0508デフォルトの名無しさん
2008/10/26(日) 16:53:22金なくてニートなのに、なんでVCなんて勉強してんの?
0509デフォルトの名無しさん
2008/10/26(日) 16:54:28本を買わなくてもサイトで勉強すればいいのでは?
過去スレ読んでないので外出ならスマソ
取りあえず、ググって最初に出たやつを乗せてみた
ttp://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html
ttp://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
ttp://wisdom.sakura.ne.jp/programming/cpp/index.html
まぁ、がんばれ
0510デフォルトの名無しさん
2008/10/26(日) 17:55:570511デフォルトの名無しさん
2008/10/26(日) 18:15:13___________
|アキバは /ヽ‐-/| |
|いつまでも |_.・ω・_ .i |
|てめーの味方 ((((((< ミ -゙ |
|ぢゃねーぞ!! |i、゚ l>゚ ノ从 |
| ゴルァ ⊂兇⊃. |
(⌒ヨ_______|_l_ヽ〉F⌒)
| | ∧_∧ / /
\\ <´Д`> / /
\二 二二二/
| サヨ |
442 名前: 下痢気味(神奈川県)[] 投稿日:2008/10/26(日) 18:07:33.73 ID:ajuDYaOC
>>441
仕事はやいな
プラカードもってるのがモナーってのもまたwww
0512デフォルトの名無しさん
2008/10/26(日) 18:24:31むしろ、金掛かるの?
プログラミングには昔から興味あったし、パソコンに関しては
あまり抵抗が無いから、唯一自分が向いてると思えるものなんだ。
てかCよりjavaとかVBとかの方がいいのかな?
>>509
おぉ、リンクサンクス
頑張ってIT企業に就職するわ
>>510
javaとかのweb関係の方が、需要があると聞いたからなぁ。
そういう経験の無い人間は、そっちを目指した方がいいんだろうか。
0513あぼーん
NGNG0514あぼーん
NGNG0515あぼーん
NGNG0516あぼーん
NGNG0517あぼーん
NGNG0518あぼーん
NGNG0519512
2008/10/26(日) 18:48:53誰かが意図的に煽ってるのか?
それとも俺のせい?
0520あぼーん
NGNG0521デフォルトの名無しさん
2008/10/26(日) 19:26:070522あぼーん
NGNG0523あぼーん
NGNG0524あぼーん
NGNG0525あぼーん
NGNG0526あぼーん
NGNG0527あぼーん
NGNG0528あぼーん
NGNG0529あぼーん
NGNG0530あぼーん
NGNG0531あぼーん
NGNG0532デフォルトの名無しさん
2008/10/26(日) 19:58:34うざいよ〜☆
0533デフォルトの名無しさん
2008/10/26(日) 20:06:240534デフォルトの名無しさん
2008/10/26(日) 20:07:420535あぼーん
NGNG0536あぼーん
NGNG0537あぼーん
NGNG0538デフォルトの名無しさん
2008/10/26(日) 20:24:12いまさらいらんだろ?
0539デフォルトの名無しさん
2008/10/26(日) 20:46:18一応9MB、インストール後でも53MB程度だからお手軽でしょ
0540デフォルトの名無しさん
2008/10/26(日) 20:58:310541デフォルトの名無しさん
2008/10/26(日) 21:02:51付属のVSコマンドプロンプトを起動
ソースファイルのディレクトリに移動
cl.exe hoge.c
hoge.exe
0542デフォルトの名無しさん
2008/10/26(日) 21:03:330543デフォルトの名無しさん
2008/10/26(日) 21:39:28NGめんどいなあバカー
0544デフォルトの名無しさん
2008/10/26(日) 21:43:56最初に学ぶものとしてCを選ぶのはやっぱりいい選択だと思うよ。
OOPに行きにくくなるかも、という懸念もなくはないけど、まあ。
0545デフォルトの名無しさん
2008/10/26(日) 21:58:20いまいくつよ?
0546デフォルトの名無しさん
2008/10/26(日) 22:09:440547デフォルトの名無しさん
2008/10/26(日) 23:24:510548デフォルトの名無しさん
2008/10/26(日) 23:25:220549デフォルトの名無しさん
2008/10/26(日) 23:30:37荒らしてんの一人だろ?
最近ム板もキチガイが多いよな
0550デフォルトの名無しさん
2008/10/26(日) 23:38:56息が詰まるほど笑った。
0551デフォルトの名無しさん
2008/10/26(日) 23:44:53特にコンストラクタ内で別のコンストラクタを呼びたい。
class obj;
obj::obj()
{
obj( v ); // 別のインスタンスが作られるようでNG
}
obj::obj()
{
obj::obj( v ); // 別のインスタンスが作られるようでNG
}
obj::obj
{
operator=( obj( v ) ); // これならOKだが。。
}
0552デフォルトの名無しさん
2008/10/26(日) 23:54:34金掛かるの?
プログラミングには昔から興味あったし、パソコンに関しては
あまり抵抗が無いから、唯一自分が向いてると思えるものなんだ。
てかCよりjavaとかVBとかの方がいいのかな?
>>509
おぉ、リンクサンクス
頑張ってIT企業に就職するわ
>>510
javaとかPerlとかのweb関係の方が、需要があると聞いたからなぁ。
プログラムの経験の無い人間は、そっちを目指した方がいいんだろうか。
0553デフォルトの名無しさん
2008/10/26(日) 23:55:58金掛かるの?
プログラミングには昔から興味あったし、パソコンに関しては
あまり抵抗が無いから、唯一自分が向いてると思えるものなんだ。
てかCよりjavaとかVBとかの方がいいのかな?
>>509
おぉ、リンクサンクス
頑張ってIT企業に就職するわ
>>510
javaとかPerlとかのweb関係の方が、需要があると聞いたからなぁ。
プログラムの経験の無い人間は、そっちを目指した方がいいんだろうか。
0554デフォルトの名無しさん
2008/10/27(月) 00:08:35今は無理。
諦めて初期化用のprivateメンバ関数をそれぞれのコンストラクタから呼び出すくらいしかない。
0555デフォルトの名無しさん
2008/10/27(月) 02:15:580556デフォルトの名無しさん
2008/10/27(月) 06:53:05無理。別のメンバ関数にでもしておくしかない。
0557デフォルトの名無しさん
2008/10/27(月) 11:24:01これ
http://rubyist.g.hatena.ne.jp/muscovyduck/20071009/p1
を試すとSEGVするんですが
(もちろん実際の数値は自分の環境でDumpしたものに置き換えてやった)
なんか環境の設定とか、そのほかの要因とかあるんでしょうか
i686 CentOS5 2.6.18-92.1.13.el5 なんですが
0558デフォルトの名無しさん
2008/10/27(月) 11:48:59mmap とか mprotect とかそのへんをいじらないとだめかも
0559デフォルトの名無しさん
2008/10/27(月) 11:56:26ただのデータ領域をコードとして実行しようとしたからだな。
実行可能領域に変更できれば解決するけどCentOSでなんてAPI使えばいいかは知らない。
0560デフォルトの名無しさん
2008/10/27(月) 12:14:43map<>.erase()でイテレータ末尾を指定した場合、
どういう処理が行われるのでしょうか?
イテレータ末尾は要素を指さないのですよね?
map<int> dic =〜;
dic.erase(dic.end());
0561デフォルトの名無しさん
2008/10/27(月) 12:28:420562デフォルトの名無しさん
2008/10/27(月) 12:33:47処理系独自に何らかのケアをしているかもしれないが、
そうでなければ単純に落ちるか、後々原因不明のバグを引き起こす原因になる
0563デフォルトの名無しさん
2008/10/27(月) 12:52:42ありがとうございます。
ただ、作者はgoogleにいらっしゃる優秀な方で間違いとは考えづらいのです。
工藤拓さんのprefixspan実装からの引用です。
private:
vector < pair <T, unsigned int> > pattern;
(以下略)
for (map <T, vector <pair <unsigned int, int> > >::iterator l = counter.begin ();
l != counter.end(); ++l) {
if (pattern.size () < maxpat) {
pattern.push_back (make_pair <T, unsigned int> (l->first, l->second.size()));
project (l->second);
★pattern.erase (pattern.end());
}
}
★の部分の理解に苦しんでいます。
0564デフォルトの名無しさん
2008/10/27(月) 15:07:16めっちゃ初心者なので何もわかりません。
ポインタの講義とかでも「ん?先頭アドレス?それってウマイの?」ってな感じです
0565デフォルトの名無しさん
2008/10/27(月) 15:16:26コンパイルオプションで言語を指定するか、指定しなければファイルの拡張子で判断
0566デフォルトの名無しさん
2008/10/27(月) 16:09:35本人に聞けば? 「end()をerase()って何をしたいの?」って。
0567デフォルトの名無しさん
2008/10/27(月) 16:28:590568デフォルトの名無しさん
2008/10/27(月) 17:25:29ども。その方向でいろいろ調べてみます
0569デフォルトの名無しさん
2008/10/27(月) 19:25:05優秀な人だからってバグをまったく出さないわけじゃないだろー。
0570デフォルトの名無しさん
2008/10/27(月) 20:56:190571デフォルトの名無しさん
2008/10/27(月) 21:37:140572デフォルトの名無しさん
2008/10/27(月) 22:51:29誰か説明してくれー
0573デフォルトの名無しさん
2008/10/27(月) 22:54:41いや書名だけ言われても
0574デフォルトの名無しさん
2008/10/27(月) 22:55:33ttp://anime.20ch.net/s/anime20ch853.jpg
ttp://anime.20ch.net/s/anime20ch854.jpg
ttp://anime.20ch.net/s/anime20ch855.jpg
0575デフォルトの名無しさん
2008/10/27(月) 23:23:43光回線を引きたいと思うのですが、1家屋につき何回線まで引く事が出来ますか?
自宅サーバーのようなものをやってみたいのですがどのような知識が必要ですか?
0576デフォルトの名無しさん
2008/10/27(月) 23:25:34まずすれ違いだから消えることが必要
0577デフォルトの名無しさん
2008/10/27(月) 23:31:56え?ここはC/C++スレですよね。
パソコンのOSはC言語で作られていると聞いたのですが
0578デフォルトの名無しさん
2008/10/27(月) 23:43:050579デフォルトの名無しさん
2008/10/27(月) 23:45:24何回線でも引けると思うが。 ただし、必要以上に引く場合は特別料金かも
0580デフォルトの名無しさん
2008/10/27(月) 23:47:35今度はJAVAスレで質問してみます。さよなら二度とこねーよ( `,_・・´)フンッ
0581デフォルトの名無しさん
2008/10/27(月) 23:49:170582デフォルトの名無しさん
2008/10/28(火) 00:04:320583デフォルトの名無しさん
2008/10/28(火) 00:31:400584デフォルトの名無しさん
2008/10/28(火) 00:46:530585デフォルトの名無しさん
2008/10/28(火) 00:48:490586デフォルトの名無しさん
2008/10/28(火) 01:54:44C言語というものは存在しないということを覚えて帰りな
0587デフォルトの名無しさん
2008/10/28(火) 02:24:24katamuki自体はdoubleで宣言しているのだからそのまま
katamuki = y/x; でもいいと思ったんですがそれだと小数点以下が表示されないんです。
もしかして y/xそのものはint型で計算されてその値がdouble型のkatamukiに
入ってしまうということなんでしょうか?
#include <stdio.h>
main () {
int x,y;
double katamuki;
printf("xとyを , で区切って入力\n");
scanf("%d,%d",&x,&y);
katamuki = (double)y/(double)x;
printf("傾きは%lf",katamuki);
return 0;
}
0588デフォルトの名無しさん
2008/10/28(火) 02:37:50そうです
0589デフォルトの名無しさん
2008/10/28(火) 03:09:10cout<< str.find("\\")<<endl;
cout<<str.rfind("\\")<<endl;
これ実行すると1と5が出ます。-1と-1にするには、wchar_tに変換するしか無いですか
0590589
2008/10/28(火) 03:14:28UNIXでもMACでWindowsでもちゃんと動くようにするにはどうしたら良いんですか?
なるべく汎用のやり方を教えてください。日本語以外のコンパイラや文字種でも使える方が良いです。
0591デフォルトの名無しさん
2008/10/28(火) 03:35:580592589
2008/10/28(火) 03:41:23半角の「\」は入力できません。パスの区切りを特定して
ファイル名とパスが分離できればいいです。
0593デフォルトの名無しさん
2008/10/28(火) 04:35:00マルチを考えるのは時期尚早
0595デフォルトの名無しさん
2008/10/28(火) 06:01:38やっぱり需要は無いことはないんだな。205とか208とか。
無謀にも作ろうかと思ってVS2008Expressなんぞを入れて
http://pc11.2ch.net/test/read.cgi/tech/1222593978/
http://pc11.2ch.net/test/read.cgi/tech/1224057986/
ttp://www.geocities.jp/pmd_no_naka/ips/
この辺をのぞいてみたが、俺には何が何だかさっぱり分からないので�_だ。
大昔にBASICで円や直線を引いたり
100までしか使えない素数を求めるプログラムを書いたぐらいのレベルだからなw
他に方法がないとしたらUtl使いは皆PageDown連打でやってるのだろうか。
0596595
2008/10/28(火) 06:03:32スマソ
0597デフォルトの名無しさん
2008/10/28(火) 06:53:390598デフォルトの名無しさん
2008/10/28(火) 09:37:48もっかい>>591を読んでも半角のバックスラッシュが入力できないという斜め上の反応しかできないなら
Windowsだけで動作するようなものを作れるようにしよう。
んで、暇なときに各環境のパス区切りに何が使われているのか、\が何なのかを勉強しよう。
0599デフォルトの名無しさん
2008/10/28(火) 12:04:45プログラム経験はVBとJavaScriptです。
さっそく入門書を買ったのですが、どうやらVC++/CLIを中心に書かれているらしい。
CLIって文法が全然違うんじゃないのですか?
今から始めるのにコンソールアプリの作り方からちまちま覚えていくのと
比べて、いきなりCLIからはじめてツブシがきくでしょうか?
それともコンソールアプリ→Win32 API って感じで勉強していく方がいいでしょうか?
0600デフォルトの名無しさん
2008/10/28(火) 12:32:21C/C++を勉強するなら、VCや.NETとか書かれてない純粋なC/C++言語の本買いな。
Win32APIやるつもりなら、まずコンソールアプリでC/C++言語をしっかり習得してから。
もし.NETメインで行くつもりならC#の方がいいぞ。
C++/CLIよりネットで情報見つけやすいし、開発環境もC#の方が作りやすい。
0601デフォルトの名無しさん
2008/10/28(火) 12:40:56後、C#にもVC++みたいなフォームデザイナはあるのですか?
0602デフォルトの名無しさん
2008/10/28(火) 12:59:30C#にもフォームデザイナは当然ある。
0603デフォルトの名無しさん
2008/10/28(火) 13:15:41ありがとうございます。
とりあえず猫のページでCとC++を勉強してみます。
むずかしそうならC++/CLIよりC#の方に行く方がいいんですね?
0604デフォルトの名無しさん
2008/10/28(火) 13:35:24しかし、C++/CLIは、.NETの機能を全て使え、既存のC、C++を動かせるので
難易度はC#と同等かそれより易しい。
0605デフォルトの名無しさん
2008/10/28(火) 14:30:450606デフォルトの名無しさん
2008/10/28(火) 16:06:01機能が少ないせいだけではないよー。
エラーメッセージが鬼わかりづらい、インテリセンスが糞弱い、
これらが初心者には致命的ですた。
昨日、vec.erase(vec.end())について聞いた者なんですけど、
VC++環境いれて試したらエラーでした。文脈から考えるに
最後の要素消すつもりなんじゃないかと思うんですが、
unixとかcygwin環境では、vec.erase(vec.end())がvec.erase(vec.end()-1)
に補正されるってことはありうるでしょうか?
0607デフォルトの名無しさん
2008/10/28(火) 16:07:32○gccとか?
0608デフォルトの名無しさん
2008/10/28(火) 17:23:24らしいのですが、予め vector<double> vec(1000)のようにサイズを決めて、宣言し、
それに要素を0番目から999番目に代入するのも遅いんですか?
0609デフォルトの名無しさん
2008/10/28(火) 17:27:300610デフォルトの名無しさん
2008/10/28(火) 17:32:270611デフォルトの名無しさん
2008/10/28(火) 17:43:190612デフォルトの名無しさん
2008/10/28(火) 18:05:390613デフォルトの名無しさん
2008/10/28(火) 18:51:20これで文字列へのポインタの配列の宣言
これを関数に渡して、p[0]は文字列"abc"を指すポインタというようにしたいです
void func(string *p[])に func(p)とすればいいでしょうか?
0614デフォルトの名無しさん
2008/10/28(火) 19:06:58あとfunc(vector<string*> p)とか ポインタを嶺渡し
もしかしたらvector使うと自動的に参照渡しかも試練 よくしらない
0615デフォルトの名無しさん
2008/10/28(火) 19:09:42func内で生成した文字列をmainで確保した場所にいれる操作をしたいんです
0616デフォルトの名無しさん
2008/10/28(火) 19:16:14void f(string &s){ s="abc"; }
main(){ string s; f(s); cout<<s; }
void f(vector<string> &s){ s.push_back("abc"); s.push_back("def"); }
main(){ vector<string> s; f(s); cout<<s[0]<<" "<<s[1]; }
0617デフォルトの名無しさん
2008/10/28(火) 19:17:090618デフォルトの名無しさん
2008/10/28(火) 19:18:250619デフォルトの名無しさん
2008/10/28(火) 19:24:23void f(vector<string> &s){ for(int n=0; n<100; n++) s[n]="** "+s[n]+ " **" ; }
main(){ vector<string> s(100);
for(int n=0; n<100; n++) s[n]=97+n;
f(s);
for(int n=0; n<100; n++) cout<<s[n]<<endl; }
0620デフォルトの名無しさん
2008/10/28(火) 19:37:15これはなんのためですか?
0621デフォルトの名無しさん
2008/10/28(火) 19:37:590622デフォルトの名無しさん
2008/10/28(火) 19:39:02"b"
"c"
・・・
というサンプル文字列を生成している。 100個を
s[0]="abc";
s[1]="def";
s[2]="ghi";
などと自分で書いても良い
0623デフォルトの名無しさん
2008/10/28(火) 19:43:42文字列がすでに定義されている(char[]やnewなど)なら
stringに先頭アドレスとサイズをセットすれば上のままでよい。
0624デフォルトの名無しさん
2008/10/28(火) 19:45:45新しく文字列リストを作りたいのかよくわからんな
主に気にしてるのは性能なのか?
0625デフォルトの名無しさん
2008/10/28(火) 19:45:46vector使えるので貼っていたいただいたので大丈夫かとおもいます
0626デフォルトの名無しさん
2008/10/28(火) 19:46:24新しく文字列リストを作りたいんです。速度とかは別に気にしてないです
0627デフォルトの名無しさん
2008/10/28(火) 19:46:38>>621 だ。
あと>>623で書いたやり方
void f(vector<string> &s){ for(int n=0; n<100; n++) s[n]="** "+s[n]+ " **" ; }
main(){ vector<string> s(100);
for(int n=0; n<100; n++) s[n]=97+n;
char ch[]="abcdefg";
s[0]=ch; s[0].resize(strlen(ch));
f(s);
for(int n=0; n<100; n++) cout<<s[n]<<endl; }
0628デフォルトの名無しさん
2008/10/28(火) 20:13:330629デフォルトの名無しさん
2008/10/29(水) 10:09:05vectorの末尾への要素の追加は、もともと定数時間じゃなかった?
バッファが足りなくなって拡張する場も、拡張の幅をうまく
計算してやると(というか2倍ずつ)、全体で償却できて
最終的に定数時間になるっていう話だったような
0630デフォルトの名無しさん
2008/10/29(水) 18:24:370631デフォルトの名無しさん
2008/10/29(水) 19:23:50文字列の最大の長さを5文字としたら、それ未満の長さの文字列には、空白をいれてそろえたいんです。
abc abcd
abcde abc
みたいにずれずに
abc abcd
abcde abc
の様に表示するか、
abc abcd
abcde abc
の様にするかのどちらかです
0632デフォルトの名無しさん
2008/10/29(水) 19:25:10abc____abcd
abcde_abc
の様に表示するか、
__abc__abcd
abcde___abc
こうです
0633デフォルトの名無しさん
2008/10/29(水) 19:31:070634デフォルトの名無しさん
2008/10/29(水) 19:32:29それはマニピュレータじゃなかったなごめん
0635デフォルトの名無しさん
2008/10/29(水) 19:35:33右詰になりました
本当は左詰めにしたかったんですが・・・
0636デフォルトの名無しさん
2008/10/29(水) 19:38:06WindowsVista、VisualStudio2008で
C言語のコンソールアプリの勉強をしているのですが、
ファイル操作に関する質問です。
ttp://www.geocities.jp/ky_webid/c/037.html
こちらのサイトにあるバイナリファイルの読み込みのプログラムを参考にファイルを開いて読み込もうとしたんですが、
読み込むことが出来ません。
開いたファイルをfreadするとサイズが0なので、ウォッチ式でファイル構造体を追っ掛けてみると
ファイル構造体の中身のポインタが「0x00000000」になっていて、開けていない?のかなと思ったんですが・・・。
ファイルパスを変えて試した場合はちゃんとNULLになってエラーを出すので、ファイルのパスには問題無いはずなんですが・・・。
何か考えられる原因があれば教えていただけると助かります。
0637デフォルトの名無しさん
2008/10/29(水) 20:44:170638デフォルトの名無しさん
2008/10/29(水) 20:45:45ソースを晒せ。
0639デフォルトの名無しさん
2008/10/29(水) 20:59:57leftとrightがあるだろ
0640デフォルトの名無しさん
2008/10/29(水) 22:21:19そんな間違いだらけのサイトで勉強してるから分からなくなるんだよ、きっと。
0641デフォルトの名無しさん
2008/10/29(水) 22:24:33c/c++でお願いします。
0642デフォルトの名無しさん
2008/10/29(水) 22:29:280643デフォルトの名無しさん
2008/10/29(水) 22:30:290644デフォルトの名無しさん
2008/10/29(水) 22:33:59流石にフォームデザイナみたいな物はありませんよね
0645デフォルトの名無しさん
2008/10/29(水) 22:38:240646デフォルトの名無しさん
2008/10/29(水) 22:39:240647デフォルトの名無しさん
2008/10/29(水) 22:40:530648デフォルトの名無しさん
2008/10/29(水) 22:46:22VC++2008 Express Editionを使ってみたのですが、C++/CLIのようなフォームデザイナ
は付いていませんでした。
Express Edition以上の製品には付いているのでしょうか?
0649デフォルトの名無しさん
2008/10/29(水) 22:49:59ドラッグ & ドロップでのインターフェイス作成
時間を取られがちな ユーザー インターフェイスの作成を、ドラッグ & ドロップのみで行うことも可能です。
http://www.microsoft.com/japan/msdn/vstudio/express/feature/2008/
0650デフォルトの名無しさん
2008/10/29(水) 23:08:04最後の引数が
”SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE”
のように複数の情報が合わさった物が渡されています
受け取り側はどのように、分解分析しているのですか?
0651デフォルトの名無しさん
2008/10/29(水) 23:26:19if (flags & SWP_SHOWWINDOW) {
}
if (flags & SWP_NOSIZE) {
}
...
0652デフォルトの名無しさん
2008/10/29(水) 23:27:17逆に、それができるようにそれらのマクロ定数は2の冪乗の値になっているはず。
0653デフォルトの名無しさん
2008/10/29(水) 23:47:58thx、できました
0654デフォルトの名無しさん
2008/10/30(木) 01:41:32書籍のコードを見ていたらファイル先頭の一連の定数定義の並びの中に
次の記述がありました。
<CHANGE>
#define ・・・
</CHANGE>
このCHANGEで囲んでいるのは何を意味してるのでしょうか。
見ているコードはVisualC++向けということなので、
そっち方面のルールなのかなとも思ったんですが、どうもわからず・・・
コードには"(この定数は)アプリケーション定義メッセージ"というコメントがついています。
0655デフォルトの名無しさん
2008/10/30(木) 02:08:490656デフォルトの名無しさん
2008/10/30(木) 02:23:38あ、なるほど。ヘルプですか!
必要に応じてここを変えてね、みたいな・・・
0657デフォルトの名無しさん
2008/10/30(木) 08:17:020658デフォルトの名無しさん
2008/10/30(木) 08:29:500659デフォルトの名無しさん
2008/10/30(木) 10:51:05というのは標準入出力の問題だから、
cin cout sscanfを併用しても変なことにはならないと言う理解であってますか?
0660デフォルトの名無しさん
2008/10/30(木) 11:04:10<iostream>
<stdio.h>
を併用するのがまずいんです
0661デフォルトの名無しさん
2008/10/30(木) 12:38:03template <class Ttype> class vecter_ptr : public std::vector<Ttype *> {
public:
~vect_ptr(){
int i;
for(i = 0; i < size(); i++;){
delete at(i);
}
}
};
と書いたら、
この書き方がshared_ptrの動作になるかどうかは置いといて、
error C2523: 'vecter_ptr<Ttype>::~vect_ptr' : クラスのデストラクタが、別の名前で宣言されています。 with[Ttype=std::vector<double>]
と表示されるのですが、これは何が行けないのでしょうか?
0662デフォルトの名無しさん
2008/10/30(木) 12:42:11別の名前って書いてあるだろ
0663デフォルトの名無しさん
2008/10/30(木) 12:42:25× class vecter_ptr
○ class vect_ptr
0664661
2008/10/30(木) 13:10:42ちょっと首つってきますorz
0665デフォルトの名無しさん
2008/10/30(木) 13:28:14併用してもいいよ
sync_with_stdio()をtrueにしておけばな
0666デフォルトの名無しさん
2008/10/30(木) 14:43:44それって
<iostream>
<cstudio>併用のときも?
0667デフォルトの名無しさん
2008/10/30(木) 15:09:08そうだよ。sync_with_stdio()でぐぐってみ。
0668デフォルトの名無しさん
2008/10/30(木) 15:12:050669デフォルトの名無しさん
2008/10/30(木) 15:17:27map.find(key)がmap.end()を返せば、キーは存在していない。
0670デフォルトの名無しさん
2008/10/30(木) 15:19:36multimup じゃなければ count() が使いやすいかもしれない。
0671デフォルトの名無しさん
2008/10/30(木) 15:22:380672デフォルトの名無しさん
2008/10/30(木) 17:47:060673デフォルトの名無しさん
2008/10/30(木) 17:50:12それは他のヘッダがcstringをインクルードしているからだろうが
移植性がないのでやめるべき
0674デフォルトの名無しさん
2008/10/30(木) 17:51:57thx
0675デフォルトの名無しさん
2008/10/30(木) 19:19:350676デフォルトの名無しさん
2008/10/30(木) 19:21:290677デフォルトの名無しさん
2008/10/30(木) 19:24:330678デフォルトの名無しさん
2008/10/30(木) 19:25:500679デフォルトの名無しさん
2008/10/30(木) 19:26:15/:::::/" `ヽ ヽ::::::::: \
/:::::::::/ ヽ ヽ:::::::::: ヽ
l:::::::{:::l , ー-j从:ヽ::::::::.ヽ
| ::i::ル{レ' ●` li!: ト、::::..',
/⌒)i"● ⊂⊃: |ノ::::. l
/ yi ヘ⊃ ,__, l|:: |:::::::::.l
( /ス、,ゝ、_ `´ ィ<|:: |_:::::::.l
'</ |l:::: i "Tーイ'^ァレ'l_::::::.l
\,,t|l:::: l'ヾ::|三/:://l/ ヽ、'i
|::|l:::: l ヾ∨:::/ ヒ::::彡, | :ji
0680デフォルトの名無しさん
2008/10/30(木) 19:41:42強制ID実装を駄目元で頼み込んでみた。
もし賛同してくれる人がいたら同意のレスつけてください。
0681デフォルトの名無しさん
2008/10/30(木) 20:02:500682デフォルトの名無しさん
2008/10/30(木) 22:47:190683デフォルトの名無しさん
2008/10/30(木) 22:50:18学生ならDreamSparkのほうが安いぞ。
国際学生証を作るのに少し時間かかるみたいだけど。
0684デフォルトの名無しさん
2008/10/30(木) 22:53:140685デフォルトの名無しさん
2008/10/30(木) 22:56:34ホントだ、無料なんですね。
しかし自分はすぐにでも手に入れたいから今回はアカデミック版いっときます。
後一つ質問なのですが、Visual Studioは英語での使用は可能でしょうか?
開発環境ぐらいは英語で使えるようになりたいので
0686デフォルトの名無しさん
2008/10/30(木) 23:01:43今すぐがいいというなら、期間限定の体験版でしばらく過ごすという手がある。
http://www.microsoft.com/downloads/details.aspx?familyid=83C3A1EC-ED72-4A79-8961-25635DB0192B&displaylang=ja
今時のWindowsとVisual Studioなら、共にUnicode対応で、互いの言語が違っていていも問題ないはず。
0687デフォルトの名無しさん
2008/10/30(木) 23:08:04ありがとうございます。
体験版といっても90日は試用期間があるみたいなので早速落として見ます。
0688デフォルトの名無しさん
2008/10/30(木) 23:18:17「LNK2019: 未解決の外部シンボル」とエラー出るです。
どうすればいいの?
0689デフォルトの名無しさん
2008/10/31(金) 01:11:230690デフォルトの名無しさん
2008/10/31(金) 07:43:050691デフォルトの名無しさん
2008/10/31(金) 09:40:350692デフォルトの名無しさん
2008/10/31(金) 10:28:47http://qb5.2ch.net/test/read.cgi/operate/1206636885/657
駄目元で書き込んだ。
賛同してくれる人はこのレスに同意のアンカーをつけてくれ。
0693デフォルトの名無しさん
2008/10/31(金) 13:26:27Bクラスで定義されている構造体をCクラスで使用したいのですが、どのようにしたら良いでしょうか。
ポインタをコピーしたいだけなのですが・・。
////////////////classA.h////////////////////////
class A{
public:
typedef struct hoge{
//略
} HOGE;
////////////////classB.h////////////////////////
pragma once;
#include "A.h"
#include "C.h"
class B : A{
public :
typedef struct hoge{
//略
} HOGE;
C m_c;
HOGE m_hoge;
}
////////////////classC.h////////////////////////
class C{
HOGE *m_hoge;
registerHoge( HOGE *hoge ){ m_hoge = hoge;};
}
class Bで m_c.registerHoge( &m_hoge )を呼び出すようにしてコンパイルすると「型指定子がありません」と怒られてしまします。
試しにHOGEの定義をC.hにコピペしたのですが、B:HOGE* から C:HOGE*に変換できませんと怒られてしまいました(T_T)
また、class A, class Bは前任者が設計した物で、あまりいじりたくはありません。どうかご教授お願いします。
0694デフォルトの名無しさん
2008/10/31(金) 13:41:000695デフォルトの名無しさん
2008/10/31(金) 15:04:02typedef struct hoge{
//略
} HOGE;
これをclass Bの宣言(スコープ)内から出して、単独のヘッダーファイル
(HOGE.h)として分離して、
classA.h,classB.h,classC.hの先頭で、HOGE.hを#includeで読み込む。
クラス内でtypedef定義すれば、そのクラス内でのみしか有効ではない
し、定義名が同じでも、実体としての中身が同じかどうかに関わらず、
コンパイラは(A:HOGEとB:HOGEは)別物として扱う。
0696デフォルトの名無しさん
2008/10/31(金) 15:05:38それを使ってみたいと思いました。
しかし、使い方が全くわからず困っています。
やったことは、
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html
ここの、
SFMT-src-1.3.3.zip
をダウンロード・解凍しました。
そして、srand()にあたる関数としてinit_gen_rand()という関数が、
rand()にあたる関数としてgenrand_res53()というような関数があると
いうことは何とか調べられたので、
続く
0697デフォルトの名無しさん
2008/10/31(金) 15:07:01#include <stdlib.h>
#include "SFMT.h"
int main()
{
int i;
init_gen_rand(0);
for(i=0 ; i<100 ; i++)
{
printf("%d",genrand_res53());
}
return 0;
}
というプログラムを作ってテストしましたがコンパイルできません。
外部シンボル'_init_gen_rand'が未解決
外部シンボル'_gen_rand64'が未解決
と表示されます。
環境は、borland c++ builder5がインストールされていますが、
コマンドプロンプトでbcc32 xxx.cという形でコンパイルしています。
初心者で申し訳ありませんが、よろしくお願いします。
0698デフォルトの名無しさん
2008/10/31(金) 15:08:24ソースの場所はSFMT-src-1.3.3.zipを解凍したフォルダ内です。
よろしくお願いします。
0699デフォルトの名無しさん
2008/10/31(金) 15:16:550700デフォルトの名無しさん
2008/10/31(金) 15:17:04bcc xxx.c dSFMT.c
でどうなる?
たぶんdefineとc99で文句言われそうだが。
0701デフォルトの名無しさん
2008/10/31(金) 15:32:04複数同時にコンパイルということもできるんですね。
dSFMTではなくてSFMTで大丈夫だと思います。
イマイチわからなかったんですけど、多分、
dSFMTは少数の乱数を発生させる奴でSFMTは
整数だと思います。
私が欲しいのは整数なので大丈夫だと思います。
また、>>700さんのように
bcc32 xxx.c SFMT.c
としてみたところ、無事コンパイルできました。
forを含む関数はインライン展開できないと警告されましたが、
SFMT内のことなので無視して実行した結果、
無事乱数が表示されました。
本当に助かりました。ありがとうございます。
0702デフォルトの名無しさん
2008/10/31(金) 16:38:30BがAを継承してて、B,とAで定義が微妙に違うんです・・。
結局キャストしたら通ったのでそれで良いことにしました。
0703デフォルトの名無しさん
2008/10/31(金) 21:16:01public:
char* cry(){ return "ワンワン"; }
};
class Cat{
public:
char* cry(){ return "ニャーニャー"; }
};
typedef char* (*TEST)(void);
void Test(TEST test)
{
printf("%s\n", test());
}
int main()
{
Dog dog;
Cat cat;
Test(dog.cry);
Test(cat.cry);
return 0;
}
こういう事はできないのでしょうか?
引数をDog::cryや&Dog::cryに変えてもエラーが出るのですが・・
0704デフォルトの名無しさん
2008/10/31(金) 21:34:200705デフォルトの名無しさん
2008/10/31(金) 21:51:05#include <boost/ref.hpp>
template<typename Func>
void Test(Func test)
{
printf("%s\n", test());
}
Test(boost::bind(&Dog::cry, boost::ref(dog));
Test(boost::bind(&Cat::cry, boost::ref(cat));
TR1でも可
0706デフォルトの名無しさん
2008/10/31(金) 21:57:41とりあえず、メンバ関数をstaticで宣言すれば可。
class Dog{
public:
static char* cry(){ return "ワンワン"; }
};
class Cat{
public:
static char* cry(){ return "ニャーニャー"; }
};
0707デフォルトの名無しさん
2008/10/31(金) 21:57:45ありがとうございます
結構面倒な問題ですね;
0708デフォルトの名無しさん
2008/11/01(土) 00:08:15の&は論理演算子の&&と同じ意味ですか?
0709デフォルトの名無しさん
2008/11/01(土) 00:19:360710デフォルトの名無しさん
2008/11/01(土) 00:24:200711デフォルトの名無しさん
2008/11/01(土) 00:29:09普通のアタマしてる人間なら、こんなことをBBSで質問するという発想自体ありえないな。
0712デフォルトの名無しさん
2008/11/01(土) 00:32:550713デフォルトの名無しさん
2008/11/01(土) 00:33:460714デフォルトの名無しさん
2008/11/01(土) 00:37:27巻末とかに演算子一覧ってあるでしょ。名前ももちろん書いてあるはず。
0715デフォルトの名無しさん
2008/11/01(土) 00:40:52「C言語 演算子」とかで検索すれば、まとめて説明してるページがたくさん見つかるっしょ。
演算子そのものを検索ワードにする必要は無いよ。
0716デフォルトの名無しさん
2008/11/01(土) 00:42:30<は文字列リテラル内以外だと << しか使わないってことでおk?
0717デフォルトの名無しさん
2008/11/01(土) 00:43:41x < 1のような比較演算に使う。
0718デフォルトの名無しさん
2008/11/01(土) 00:45:280719デフォルトの名無しさん
2008/11/01(土) 00:55:240720デフォルトの名無しさん
2008/11/01(土) 05:54:18質問に素直に回答すればいいものをすぐに馬鹿にしたりどうでもいいこというからだな
そりゃ人ともうまくつきあえんしもちろん女にも嫌われるわけ
0721デフォルトの名無しさん
2008/11/01(土) 06:27:570722デフォルトの名無しさん
2008/11/01(土) 08:12:100723デフォルトの名無しさん
2008/11/01(土) 09:27:080724デフォルトの名無しさん
2008/11/01(土) 11:10:27馬鹿なプログラミング学習者はもっともてないよw
0725デフォルトの名無しさん
2008/11/01(土) 12:04:40もし決まっているとしても、明示的に代入すべきですか?
0726デフォルトの名無しさん
2008/11/01(土) 12:36:45他にどうしろっての?
0727デフォルトの名無しさん
2008/11/01(土) 12:45:44文字列の途中に0があったら末尾と間違えないんですか?
0728デフォルトの名無しさん
2008/11/01(土) 12:46:520729デフォルトの名無しさん
2008/11/01(土) 12:46:59間違えるというより、そこを末尾と判定するのが正しい動作
0730デフォルトの名無しさん
2008/11/01(土) 12:48:12'0' != 0
>>726
begin()で初期化されるとして、itr = begin();みたいなのは冗長かなあと思ってですね
0731デフォルトの名無しさん
2008/11/01(土) 12:49:58末尾に0を置くというよりは、「0が文字列の末尾」。
もしchar hoge[10]なんて配列があって、hoge[5]が0だったら、
「hogeはサイズ10のchar型の配列」であり、同時に「hogeから始まる文字列は5文字」ということ。
0732デフォルトの名無しさん
2008/11/01(土) 13:29:15具体的にどうなっているべきだと思うの?
0733デフォルトの名無しさん
2008/11/01(土) 13:30:23std::vector<Hoge> vec_1;
std::vector<Hoge> vec_2;
std::vector<Hoge>::iterator iter;
begin()で初期化されるとしたら、iterはvec_1, vec_2どっちのbegin()で初期化されるんでしょうね?
0734デフォルトの名無しさん
2008/11/01(土) 14:06:15'0' != 0
がよくわからないんですけど、0も\0も同じじゃないんですか?コードがわかりやすいように\を付けるといいと、書いてあるんですが、
char hoge[10] = "7890123456";
は、サイズ10で"789"の3文字の文字列になるんですか?
CString hogeS = hoge;
0735デフォルトの名無しさん
2008/11/01(土) 14:10:44ざっくばらんに言ってみると
'0' つまりは0という文字は中身としては(大抵は)48という数値だ
putchar(48)とputchar('0')は同じ意味になる
0 という文字に振られた認識番号みたいな感じ
'\0' は中身が0
0736デフォルトの名無しさん
2008/11/01(土) 14:14:32やっとわかりました。ありがとうございました。
0737デフォルトの名無しさん
2008/11/01(土) 14:16:13"7890123456"の「0」は文字の「0」だから、C言語のコードでは'0'と表す。'0'の文字コードは0ではない。
終端文字の「0」は、'\0'で表す。この文字コードは0である。
0738デフォルトの名無しさん
2008/11/01(土) 14:23:22DLLを作る理由ってなんですか?もしかしてオープンソースかどうかの違いしかないですか?自分で使うだけならDLLいらないですよね。であってますか?
0739デフォルトの名無しさん
2008/11/01(土) 14:39:08まぁ自分で作って自分で使うようなちっちゃい関数群だったら、いちいち作る必要は無いかな
0740デフォルトの名無しさん
2008/11/01(土) 14:44:40毎回リンクする破目になって構わないのなら、DLLにしなくていいよ。
0741デフォルトの名無しさん
2008/11/01(土) 14:46:22Susieプラグインみたいに別の人が後から機能拡張できる仕組みを作れたりする。
0742デフォルトの名無しさん
2008/11/01(土) 15:12:48メモリやディスクの節約というのは、DLLを使うアプリケーションごとにオブジェクトをインスタンスする時、どう節約になるんですか?
あ、staticのときか。わかってきました。ありがとうございました。
0743デフォルトの名無しさん
2008/11/01(土) 15:20:22なんか馬鹿でかい汎用クラスで使う関数1つだけとか無駄なんじゃないかと気になってきたんだけど
0744デフォルトの名無しさん
2008/11/01(土) 15:31:07「使わない関数をバイナリから取り除く」程度なら、
処理系の最適化に任せておけば良いと思うよ。
ただ、どのみち実行速度には殆ど関係しないはず。
0745デフォルトの名無しさん
2008/11/01(土) 16:36:09ありがとう、すっきりした
0746デフォルトの名無しさん
2008/11/01(土) 17:50:53オブジェクト名が何個必要になるかわからないのでobj1 obj2 ・・・と増やしていきたいんですが
CString クラス名;
for(i=0;i=count;i++){
クラス クラス名+(char)i
}
みたいなことをするにはどうすればいいですか?
0747デフォルトの名無しさん
2008/11/01(土) 17:59:12vector<CString>クラス名;
for(i=0;i=count;i++){
クラス名.push_back+(クラス名());
}
でクラス名[i]で使用じゃなんかまずいのか?
0748デフォルトの名無しさん
2008/11/01(土) 18:02:14か
0749デフォルトの名無しさん
2008/11/01(土) 18:13:520750デフォルトの名無しさん
2008/11/01(土) 18:25:290751デフォルトの名無しさん
2008/11/01(土) 18:46:56遠回りになるか、近道になるかは、たぶんだれも分からないはず。
0752デフォルトの名無しさん
2008/11/01(土) 19:03:35すごいです。今までSTLは避けてきましたが、動的変数以外でこんなことができるとは知りませんでした。勉強になりました。ありがとうございます。
0754デフォルトの名無しさん
2008/11/01(土) 19:41:10てもできると思うが?
CMyClass::CMyClass() {
m_lpStrBuf=NULL;
m_numObjCount=0;
}
CMyClass::~CMyClass() {
delete [] m_lpStrBuf;
}
void CMyClass::CreateMultipleCstring(int nCount) {
if(m_lpStrBuf)
{
delete[] m_lpStrBuf;
m_lpStrBuf=NULL;
m_numObjCount=0;
}
m_lpStrBuf=new CString[nCount];
m_numObjCount=nCount;
}
CString *CMyClass::GetObject(int nPos) {
if(m_lpStrBuf && 0<=nPos && nPos<m_numObjCount)
return &m_lpStrBuf[nPos]; // 有効なインデックス
else
return NULL; // 無効なインデックス
}
0755デフォルトの名無しさん
2008/11/01(土) 19:48:11圧倒的にそっちのほうが「わざわざ」だと思う。
0756デフォルトの名無しさん
2008/11/01(土) 21:23:46わざわざ自前でコーディングしてコピーコンストラクタを忘れたり例外安全性を壊したりしたくないよ。
0757デフォルトの名無しさん
2008/11/01(土) 21:37:17初めて使ったのでめちゃくちゃエラー出て苦労しました。STLと間違えてATLのサポート適用とかいうのを実行したりしましたが、やっとエラー残り1個になりました。
vector<HTREEITEM> vObj;
int i = 0;
void test(void){
vObj.resize(i+1);
vObj.push_back+(vObj()); //この行で 0 引数を取り込む関数には評価されません。 のエラーが出てしまいます。 vObj()の()の意味がわかりません
i++
}
vObj.push_back(vObj);だと意味が違ってくるんでしょうか?
これだと、'std::vector<_Ty>::push_back' : 1 番目の引数を 'std::vector<_Ty>' から 'const HTREEITEM &' に変換できません。
とエラーが出てしまいます。教えてください。
0758デフォルトの名無しさん
2008/11/01(土) 21:41:210759デフォルトの名無しさん
2008/11/01(土) 21:46:13void test(void){
vObj.push_back(HTREEITEM());
}
こうだろ vector は push_backで
必要な領域を自動確保するからresizeなんかいらない。
0760デフォルトの名無しさん
2008/11/01(土) 22:04:100761デフォルトの名無しさん
2008/11/01(土) 22:28:300762デフォルトの名無しさん
2008/11/01(土) 22:30:15は誤字です。すいませんでした
改変して作ったもんだったから・・・
そもそもデフォルトコンストラクタでいいなら
vector<HTREEITEM> vObj(10);
ですむんじゃない?
0763デフォルトの名無しさん
2008/11/01(土) 22:50:19vObj.push_back(HTREEITEM());
でいけました。みんなありがとう!
なぜクラスに()が必要なんですか?これは戻り値のない関数に使うものじゃないんですか?
0764デフォルトの名無しさん
2008/11/01(土) 23:01:530765デフォルトの名無しさん
2008/11/01(土) 23:09:540766デフォルトの名無しさん
2008/11/01(土) 23:11:490767デフォルトの名無しさん
2008/11/01(土) 23:17:02void で値を受け取ると何の型が不明である
型を調べるいい方法ないですか?
今はサイズ受け取ってしのいでる
0768デフォルトの名無しさん
2008/11/01(土) 23:17:350769デフォルトの名無しさん
2008/11/01(土) 23:20:12可能であればtemplate化でもすれば。
0770デフォルトの名無しさん
2008/11/01(土) 23:20:41thx!
0771デフォルトの名無しさん
2008/11/01(土) 23:50:300772デフォルトの名無しさん
2008/11/02(日) 01:26:54バイト・シーケンスが正しくありません。
と言うエラーが出て
以下のようなプログラムがコンパイルできません。
#include <stdio.h>
#include <stddef.h>
#include <sys/types.h>
#include <locale.h>
#include <wchar.h>
int main()
{
wchar_t *whoge = L"あいう";
setlocale(LC_ALL ,"");
wprintf(L"%s\n", whoge);
return 0;
}
何がいけないのでしょうか?
0773デフォルトの名無しさん
2008/11/02(日) 03:08:30VC2008ではコンパイルできて、正常に実行できた。
0774デフォルトの名無しさん
2008/11/02(日) 07:57:55コピーコンストラクタは、vectorで扱うオブジェクトクラスが持って
いるかどうかで、vectorクラスを使えば解決する問題じゃないでしょ。
例外うんぬんも同様。
0775772
2008/11/02(日) 08:08:41本当ですか?
OSはMac OS Xなんですが、全く動かない。
デバッガで見たら、
wchar_t *whoge = L"あいう";
の時点で、失敗してます。
どうすれば、うまくいきますかね?
0776デフォルトの名無しさん
2008/11/02(日) 08:57:45Mac OS X 10.5.5
gcc 4.0.1
では、%s を %ls にすることで正しく動いたよ
0777デフォルトの名無しさん
2008/11/02(日) 09:25:39保持されるクラス側で対処しなきゃいけない部分があるのは当然だが、コンテナ相当部分でも面倒を
抱え込みたくはないってことだろ。
実際 >754 のコードは「コピーコンストラクタを忘れたり例外安全性を壊し」てるわけだし。
0778デフォルトの名無しさん
2008/11/02(日) 10:14:47ワイド文字リテラルの扱いは処理系依存なところがある。
コンパイラのマニュアルをよく読め。
0779デフォルトの名無しさん
2008/11/02(日) 10:52:02可能です。
以上。
はい、次。
0780デフォルトの名無しさん
2008/11/02(日) 11:05:32>>754のコード自体は必要部分のみ抜粋してあるけど、CString自体は
コピーコンストラクタを持っているし、GetObject()は保持するオブジェ
クトのコピーではなく生ポインタを返す仕様なので、ここでのコピー
コンストラクタ呼び出しは行われない。
CMyClassの複製を作る際のことを言っているのだとしたら、それは勝手な
解釈だろう。 CMyClassで単にメンバ変数のコピーをするのか、実体も
別に複製してコピーするのか、複製を許可したくない場合も、CMyClassの
定義によって実装も変わる。
結局、テンプレートクラス使っても、マルチスレッド操作の場合、テンプ
レートが保持するオブジェクトの参照に対して、排他制御とか自分でやら
なきゃならないし、テンプレート内で例外が発生しても、例外を投げる
だけで、結局は何も変わっていない思うのだが?
個々のクラス内で例外処理をキャッチしなくても、上位のオブジェクト
生成を呼び出している部分で例外をキャッチできるし、どこに例外処理を
書くかは、設計者次第だろう。
>>775
wchar_t whoge[]= L"あいう";
では?
0781デフォルトの名無しさん
2008/11/02(日) 12:08:54そんなに要素数は多くないのでバブルソートを自分で書こうとしているのですが、こういう場合は
どうするのがよいですか?
0782デフォルトの名無しさん
2008/11/02(日) 12:11:200783デフォルトの名無しさん
2008/11/02(日) 12:12:36mapをなんだとおもってるんだ
0784デフォルトの名無しさん
2008/11/02(日) 12:14:080785デフォルトの名無しさん
2008/11/02(日) 12:18:41実際は、map<会社名の文字列、会社のデータ>としておいて、会社のデータの中の株価でソートを
しようと思っているのですが、、、
0786デフォルトの名無しさん
2008/11/02(日) 12:25:30http://www.google.co.jp/search?hl=ja&q=std%3A%3Amap+%E3%82%BD%E3%83%BC%E3%83%88&lr=
0787デフォルトの名無しさん
2008/11/02(日) 12:27:38std::map<double,myclass&> 追加
0788デフォルトの名無しさん
2008/11/02(日) 14:56:23private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
progressBar1->Maximum = shikou_kaisu; /* 最大値 */
progressBar1->Visible = true;
label8->Text = "処理中";
label8->ForeColor = System::Drawing::Color::Red;
for(i=0; i<shikou_kaisu; i++){
rnd(kibou_kosu); //自作関数呼び出し
Sleep(1);
}
};
このようにshikou_kaisuには10000を入れていまして、1万回のループに入る前に
プログレスバーを出し、label8の文字色を赤にし、処理中と書き換えているのですが
どちらとも(プログレスバーもlabel書き換えも)for文が終了したあとに処理されてしまいます。
なぜでしょうか?
もう一つ教えてください。
出力ウィンドウに、テスト的に変数の値などを表示させたいのですが、
Console::WriteLine("aaa");
などとしてもまったく表示されません。何か方法はありますでしょうか?
よろしくお願いします。
0789デフォルトの名無しさん
2008/11/02(日) 15:03:430790デフォルトの名無しさん
2008/11/02(日) 15:08:330791デフォルトの名無しさん
2008/11/02(日) 15:17:41>>789
ソースをよく見ろ。とてもC#には見えない。
それにC#ならConsole::WriteLineでなくSystem.Console.WriteLineじゃないか?
0792デフォルトの名無しさん
2008/11/02(日) 15:33:13メッセージループ廻してないからでしょ。
0793デフォルトの名無しさん
2008/11/02(日) 15:33:32何の言語か知らないが、メッセージループでぐぐるのだ。
0794デフォルトの名無しさん
2008/11/02(日) 15:46:22メッセージループぐぐってみましたが、よくわかりませんでした。
どのように改変すればfor文に入る前に処理できるでしょうか;
0795デフォルトの名無しさん
2008/11/02(日) 16:03:28C++BuilderだったらApplication.ProcessMessagesを使うとメッセージループが回って画面更新されるんだけど、C++/CLIはしらね。
他には、タイマーイベントや、アイドルイベント、マルチスレッドとか方法がある。
0796デフォルトの名無しさん
2008/11/02(日) 16:16:51タイマーもWM_TIMERだったり、アイドルイベントもWM_KICKIDLEだったり
すると、メッセージ通知の1つだから、メッセージループを廻さないと
更新されない。
0797デフォルトの名無しさん
2008/11/02(日) 16:26:490798デフォルトの名無しさん
2008/11/02(日) 18:03:480799デフォルトの名無しさん
2008/11/02(日) 19:05:51このデストラクタの定義だとコピーコンストラクタ定義するか複製できないようにしとかないとまずくね?
が、まぁコピーの方針自体に色々あるというのはその通り。
例外についてはどこで catch するか、ではなくて例外が送出された段階で状態が変わってしまう可能性があるのが
あんまりよろしくないという意味。
CreateMultipleCString() 中の new で例外が送出された場合、CMyClass の中身がクリアされてしまう場合がある。
ということで良くある手法としては一時オブジェクトを作成し必要な処理を行った後、nothrow 保証のある swap() で
内容を交換する、というのがある。
まぁこれも強い例外保証なんかいらない、という選択肢はあるかもしれない。
0800デフォルトの名無しさん
2008/11/02(日) 19:21:03何も変わらないと思っているのにわざわざ自分でコード書く意味がわからんな。
しかも作者次第の部分で大量に解説が必要なやつを。
0801デフォルトの名無しさん
2008/11/02(日) 21:21:040802デフォルトの名無しさん
2008/11/02(日) 21:23:580803デフォルトの名無しさん
2008/11/02(日) 21:32:39ようするに、メッセージループを回すにはその関数button1_Clickから抜ければいい。
すると、button1_Clickを呼んだ誰か(それこそがメッセージループ)が
今度はラベルやプログレスバーを書き換える関数を呼び出す。
チョー手抜きで手っ取り早くやるには、Application::DoEventsを呼ぶこと。
>>795の言っているApplication.ProcessMessagesに相当する。
0804デフォルトの名無しさん
2008/11/02(日) 21:46:11そう。
定義しなくても sort に比較関数オブジェクトを渡せばよろしい
0805デフォルトの名無しさん
2008/11/02(日) 22:28:46ありがとうございます。
ソートしたあとの検索でlower_bound()を使ったところ、一致する要素がない場合に
一致していない(微妙に似ている)要素が検索されてしまうのですが、find()で検索するべきでしょうか?
0806デフォルトの名無しさん
2008/11/02(日) 22:30:570807デフォルトの名無しさん
2008/11/02(日) 22:33:44lower_boundは名前通りの仕事をしているだけだ。
0808デフォルトの名無しさん
2008/11/03(月) 00:49:32もしかして、というのは完全に一致する要素がない場合、大小関係が一番近い要素を
返すんですか?
STL標準講座 では一致する要素があるかどうかをイテレータがvector.end()と一致するかどうかで
判断いたのですが。
0809デフォルトの名無しさん
2008/11/03(月) 00:50:370810デフォルトの名無しさん
2008/11/03(月) 00:53:04そういうことを訊ねるのにスレ使わないで欲しいが。
0811デフォルトの名無しさん
2008/11/03(月) 03:02:15すいません。
でもソート済みのベクタからある要素を検索するときにはlower_bound()を使うものだと思ってたので、
見つからなかった時にはvector.end()が返るものだと完全に誤解してました。
本もそう書いてあったし。折角ベクタはソート済みなのですが、
find()でやることにしました。
ありがとうございました。
0812デフォルトの名無しさん
2008/11/03(月) 03:24:53lower_bound() してからもう一回比較かけるだけでいいのに。
0813デフォルトの名無しさん
2008/11/03(月) 08:22:33たとえば
*pValu ポインタはpを付ける
vector<????> v○○○ vを付ける
bool is○○○ isを付ける
0814デフォルトの名無しさん
2008/11/03(月) 08:34:20あるところにはある。ない場合は、好きにすればいい。
必要なら、規約スレ、命名スレへどうぞ。
0815デフォルトの名無しさん
2008/11/03(月) 11:37:45断片的なプログラムしか書いてないせいか
よくわからないところがあります。
#include <stdio.h>
void go(void)
int main(void){
int x;
if( x%2 == 0 ) go();
}
おおざっぱに書くとこのような記述が見られます。
なんとなくxの初期値を0と考えて読むとつじつまが合いません。
だからプログラム全体の調和が取れるような適切な値を予想して
自分で1とか2とか想像しなければならないのかなと思うのですが合ってますか?
やはり初期値は0と考えるべきでしょうか?
0816デフォルトの名無しさん
2008/11/03(月) 11:40:21x の値は不定。
プログラムとしては何が起こるか予想できない。
絶対にどこか勘違いか見落としをしている。
0817815
2008/11/03(月) 11:40:30#include <stdio.h>
void go(void)
int x;
int main(void){
if( x%2 == 0 ) go();
}
こういう形です。
グローバル引数とでも言うんでしょうかね。
0818デフォルトの名無しさん
2008/11/03(月) 11:40:59局所変数は初期化されない。
0819デフォルトの名無しさん
2008/11/03(月) 11:41:13x == 0
で初期化されてる
0820815
2008/11/03(月) 11:43:26#include <stdio.h>
void go(void)
int x;
int check(void){
if( x%2 == 0 ) go();
}
こういう形です。
main関数が明示されていません。
0821815
2008/11/03(月) 11:46:21ということは、この文で言うとxの初期値は0ということでいいんですか?
main関数が何してるかわからないから、結局わからないんじゃないかと
今になって気づいたのですが。
0822815
2008/11/03(月) 11:53:35#include <stdio.h>
void check(void)
void go(void)
int x;
void check(void){
if( x%2 == 0 ) go();
}
やっぱりmain関数が明示されてないから、
どうなってるのかわからないから想像しなきゃならないということのようですね。
自分で勝手にスッキリしました。失礼しました。
0823デフォルトの名無しさん
2008/11/03(月) 12:08:380824デフォルトの名無しさん
2008/11/03(月) 13:31:42普通に考えておかしい。
0825デフォルトの名無しさん
2008/11/03(月) 13:35:31みたところまだ丸写しすらできていない様子。そんなコードがまともなテキストに書かれているはずがない。
0826デフォルトの名無しさん
2008/11/03(月) 13:46:01まともに話ができない。
0827デフォルトの名無しさん
2008/11/03(月) 13:47:36まぁいいか
0828デフォルトの名無しさん
2008/11/03(月) 16:11:36相手があるのにその状況だったら、失礼無礼を通り越してしまうじゃないか。
0829デフォルトの名無しさん
2008/11/03(月) 17:23:03CodeGearのホームページで登録フォームに記入して、メールでパスワードをもらって、
C++ Compiler 5.5/Turbo Debuggerのダウンロードボタンをクリックしたが、
「Internet Explorer ではこのページは表示できません」と表示されます。
「上記のダウンロードサイトにアクセスできないときは、CodeCentral のダウンロードページをお試しください。
CodeCentralのダウンロードページを利用するには、CDNへのログインが必要です。」とあるから「CDNへのログイン」
をクリックしたら
Your LoginとPasswordの二つの記入項目があります。Your Loginとは何でしょうか。
passwordはメールで貰ったものでしょうか。
(OSはウィンドウズ・ビスタです。)
0830デフォルトの名無しさん
2008/11/03(月) 17:27:510831デフォルトの名無しさん
2008/11/03(月) 17:33:41C/C++ の相談ですらないな。
ちゃんと貰ったメールの内容は読んだのか?
0832デフォルトの名無しさん
2008/11/03(月) 18:09:12構造体(もしくは配列) = {値1,値2,,,};
とやると宣言時以外だとエラーが出てしまうんですが、、、
0833デフォルトの名無しさん
2008/11/03(月) 18:11:100834デフォルトの名無しさん
2008/11/03(月) 18:21:37自作関数でやる
>>833
テンプレートなりオーバーロードなり
0835デフォルトの名無しさん
2008/11/03(月) 18:25:230836デフォルトの名無しさん
2008/11/03(月) 18:35:060837デフォルトの名無しさん
2008/11/03(月) 18:42:051個ずつ型キャストしてコピーして渡す
0838デフォルトの名無しさん
2008/11/03(月) 18:44:280839デフォルトの名無しさん
2008/11/03(月) 18:44:400840デフォルトの名無しさん
2008/11/03(月) 18:48:240841デフォルトの名無しさん
2008/11/03(月) 20:01:45(int*)
0842デフォルトの名無しさん
2008/11/03(月) 22:03:260843デフォルトの名無しさん
2008/11/03(月) 22:04:35日本語でおk
0844デフォルトの名無しさん
2008/11/03(月) 22:05:30列挙値をビット OR してどういう意味になるのかコンパイラには想像も付かんから、当然だろ。
0845デフォルトの名無しさん
2008/11/03(月) 22:05:32C++かな
キャストしないと無理
0846デフォルトの名無しさん
2008/11/03(月) 22:12:22糞仕様
ttp://d.hatena.ne.jp/ryocotan/20080321/p1
0847デフォルトの名無しさん
2008/11/03(月) 22:44:01そもそもenumの値を論理演算とか。
列挙の意味を分かってないんじゃ(笑)
0848デフォルトの名無しさん
2008/11/03(月) 22:49:160849デフォルトの名無しさん
2008/11/03(月) 22:50:10今の言語教育ってそういう方向を向いてないんだよね。挙げ句つまらないbugブラマが量産されると…
0850デフォルトの名無しさん
2008/11/03(月) 23:13:18int three = ONE | TWO;であれば問題なくコンパイル通ると思うが。
0851デフォルトの名無しさん
2008/11/03(月) 23:54:050852デフォルトの名無しさん
2008/11/03(月) 23:55:110853デフォルトの名無しさん
2008/11/03(月) 23:55:570854デフォルトの名無しさん
2008/11/04(火) 00:21:35if(str == ("ヒマワリ" || "ピーナッツ"){
TRACE(_T("当たり");
}
これで当たりがでません。どうすればいいんですか?
0855デフォルトの名無しさん
2008/11/04(火) 00:23:26どうしたいんですか
0856デフォルトの名無しさん
2008/11/04(火) 00:30:07if(str==_T("ヒマワリ")||str==_T("ピーナッツ")){
こういうことか?
0857デフォルトの名無しさん
2008/11/04(火) 00:56:000858デフォルトの名無しさん
2008/11/04(火) 01:13:27できたありがとう。||じゃなくて&&だった
0859デフォルトの名無しさん
2008/11/04(火) 10:29:210860デフォルトの名無しさん
2008/11/04(火) 10:49:130861661
2008/11/04(火) 14:22:43double d1 = INF, d2 = -INF;
とやると、普通に1が代入されるんですが…
だからってd = -log(0)とかやるのもどうかと思って…
0862デフォルトの名無しさん
2008/11/04(火) 14:30:09d1 = HUGE_VAL;
d2 = -HUGE_VAL;
0863デフォルトの名無しさん
2008/11/04(火) 14:40:20#include <limits>
d1 = numeric_limits<double>::inifinity();
d2 = -d1;
0864861
2008/11/04(火) 16:48:120865デフォルトの名無しさん
2008/11/04(火) 21:21:100866デフォルトの名無しさん
2008/11/04(火) 21:55:020867デフォルトの名無しさん
2008/11/04(火) 22:11:36main()
{
int i, j;
for (i = 1; i <= 50; i++){
for (j = 2; j <= i - 1; j++) {
if (i % j == 0){
break;
}
}
if (i == j){
printf("%d ", i);
}
}
printf("\n");
return(0);
}
これをforじゃなくてwhile文を使って作りたいんですが、どうすればいいのか教えてくらさい
0868デフォルトの名無しさん
2008/11/04(火) 22:23:16iとかjの初期化
while(条件式){
iとかjのインクリメント
}
みたいな。
0869デフォルトの名無しさん
2008/11/04(火) 22:41:52/ ―\ ┏┛
/ノ (●)\ ・
. | (●) ⌒)\
. | (__ノ ̄ |
\ /
\ _ノ
/´ `\
| |
| |
___ ━┓
/ ― \ ┏┛
/ (●) \ヽ ・
/ (⌒ (●) /
/  ̄ヽ__) /
. /´ ___/
| \
| |
0871デフォルトの名無しさん
2008/11/05(水) 05:28:28関数の繰り返しは使わず、変数に結果を入れて変数で処理したほうがいいのか
出来る限り関数はinlineにする。=完成したら、全コードを一つの関数にまとめたほうがいいのか
レジスタは自動にまかせず、手動で使いこなさなければいけないのか
これはあってますか?この他に、なにかありますか?
0872デフォルトの名無しさん
2008/11/05(水) 07:04:02分岐をなくす。forは一部展開する。
プログラムはコンパクトにする。アルゴリズムを検討する。
無駄なコピーを無くす
デバッガの逆アセンブラでコンパイラの吐くコードを確認する
0873デフォルトの名無しさん
2008/11/05(水) 08:51:16>出来る限り関数はinlineにする。=完成したら、全コードを一つの関数にまとめたほうがいいのか
>レジスタは自動にまかせず、手動で使いこなさなければいけないのか
>分岐をなくす。forは一部展開する。
コンパイラに任せる。
>デバッガの逆アセンブラでコンパイラの吐くコードを確認する
コンパイラの出力で充分。
要は、コンパイラを使いこなすだけでかなりのことはできる。
0874デフォルトの名無しさん
2008/11/05(水) 11:04:46- 良いアルゴリズムを使うこと(=実行時間オーダを減らすこと)
- 実行のボトルネックとなる部分をプロファイルなどの手段で見つけて、そこを高速化すること
(それ以外の部分を変えても全体の高速化には寄与しない)
あと、あなたが言っているような小手先のコード改変ではまず速くならないよ
無闇にinline化したらキャッシュヒット率が落ちて逆に遅くなるし
0875デフォルトの名無しさん
2008/11/05(水) 20:49:46完成した後(最適化)だけでいい。
0876デフォルトの名無しさん
2008/11/06(木) 08:13:30C++にもマイクロソフトのVCとか、何個かあるみたいですが
C++を学びたいと思ったらVCから始めてもいいのでしょうか?
VCと他のC++は何が違うのかがわかりません。。
0877デフォルトの名無しさん
2008/11/06(木) 08:19:20Visual C++ でいいよ
0878デフォルトの名無しさん
2008/11/06(木) 08:20:29でもC++/CLIには手を出さないようにな。
0879デフォルトの名無しさん
2008/11/06(木) 08:57:38楽しいのに
0880デフォルトの名無しさん
2008/11/06(木) 09:38:10C++は言語の名前、VCは開発ソフトの名前。
0881デフォルトの名無しさん
2008/11/06(木) 11:45:42禁止されていればいけないということになるだろ
楽チン
0882デフォルトの名無しさん
2008/11/06(木) 16:36:27途中で行き詰ってしまいました。
キャラクタのクラスを作成し、パラメータを設定したインスタンスを2つ作って
ダメージのやりとりをするというつもりなのですが、
インスタンス間のダメージのやりとりがどうしても上手く出来ません。
解法は無数にあるのだと思いますが、一例やヒントだけでも
教えて頂けるとありがたいです。
0883デフォルトの名無しさん
2008/11/06(木) 16:47:10メッセージキューでも作ればイイジャン。
0884デフォルトの名無しさん
2008/11/06(木) 17:14:50ダブルディスパッチでぐぐれ
0885デフォルトの名無しさん
2008/11/06(木) 17:38:26C++でFC版ドラクエっぽいRPGを作る Lv3
http://pc11.2ch.net/test/read.cgi/gamedev/1224775557/
0886デフォルトの名無しさん
2008/11/06(木) 18:31:230887デフォルトの名無しさん
2008/11/06(木) 20:00:22error LNK2005: hogefunc は既に project.obj で定義されています。
inlineにすると消えるです。でもインラインにしたくないです。
0888デフォルトの名無しさん
2008/11/06(木) 20:03:020889デフォルトの名無しさん
2008/11/06(木) 20:06:270890デフォルトの名無しさん
2008/11/06(木) 20:18:21private:
int value;
public:
Object() : value(5){}; //この行
};
コメントが付いてる部分の書き方を知らなかったので調べたいのですが、どう検索すればいいかが分かりません。
名前があれば教えてください。
0891デフォルトの名無しさん
2008/11/06(木) 20:21:460892デフォルトの名無しさん
2008/11/06(木) 20:22:190893デフォルトの名無しさん
2008/11/06(木) 20:24:08ありがとうございます
0894デフォルトの名無しさん
2008/11/06(木) 20:24:390895デフォルトの名無しさん
2008/11/06(木) 20:25:210896デフォルトの名無しさん
2008/11/06(木) 20:39:55順番がおかしくなるのはどうして
deleted 31
deleted 30
deleted 3
deleted 29
deleted 28
deleted 27
deleted 26
deleted 25
deleted 24
deleted 23
deleted 22
deleted 21
deleted 20
deleted 2
deleted 19
deleted 18
deleted 17
deleted 16
deleted 15
deleted 14
deleted 13
deleted 12
deleted 11
deleted 10
deleted 1
deleted 0
0897デフォルトの名無しさん
2008/11/06(木) 20:45:26deleted 6
deleted 59
deleted 58
deleted 57
deleted 56
deleted 55
deleted 54
deleted 53
deleted 52
deleted 51
deleted 50
deleted 5
deleted 49
deleted 48
deleted 47
deleted 46
deleted 45
deleted 44
deleted 43
deleted 42
deleted 41
deleted 40
deleted 4
deleted 39
deleted 38
deleted 37
deleted 36
deleted 35
deleted 34
deleted 33
deleted 32
0898デフォルトの名無しさん
2008/11/06(木) 20:45:58deleted 8
deleted 7
deleted 63
deleted 62
deleted 61
deleted 60
0899デフォルトの名無しさん
2008/11/06(木) 20:57:46deleted 59
deleted 58
deleted 57
deleted 56
deleted 55
deleted 54
deleted 53
deleted 52
deleted 51
deleted 50
deleted 5
deleted 49
deleted 48
deleted 47
deleted 46
deleted 45
deleted 44
deleted 43
deleted 42
deleted 41
deleted 40
deleted 4
deleted 39
deleted 38
deleted 37
deleted 36
deleted 35
deleted 34
deleted 33
deleted 32
0900デフォルトの名無しさん
2008/11/06(木) 21:07:02一応mapのイテレータは順序もきちんとソートされてるはずだけど。
0901デフォルトの名無しさん
2008/11/06(木) 21:19:22それを貼って誰かが理解してくれると思ったのか?
0902デフォルトの名無しさん
2008/11/06(木) 21:43:32deleted 30
deleted 3
deleted 29
deleted 28
deleted 27
deleted 26
deleted 25
deleted 24
deleted 23
deleted 22
deleted 21
deleted 20
deleted 2
deleted 19
deleted 18
deleted 17
deleted 16
deleted 15
deleted 14
deleted 13
deleted 12
deleted 11
deleted 10
deleted 1
deleted 0
0903デフォルトの名無しさん
2008/11/06(木) 21:44:44deleted 8
deleted 7
deleted 63
deleted 62
deleted 61
deleted 60
0904デフォルトの名無しさん
2008/11/06(木) 21:54:000905デフォルトの名無しさん
2008/11/06(木) 22:43:110906デフォルトの名無しさん
2008/11/07(金) 00:38:550907デフォルトの名無しさん
2008/11/07(金) 01:16:22> 順番がおかしくなるのはどうして
「おかしくなる」とか「うまくいかない」ってのは、自分の中に「こうであるはず」という基準・狙いがあって、
それと現実が違ってる、という報告だよね。
そういう書き込みは、自分の基準・狙いと、具体的に何をしたのかを書かなきゃ、情報的に意味が無いよ。
>>904がエスパーしたように、文字列のソート結果として見ると「順番はおかしくない」わけだし。
ちょっとキツイけど、お子様とか低学歴の話し方なんだよね、これ。
いま持っている自分の基準というものが、たくさんある中から個人的な要因で「選んだもの」であり、
言わなきゃ他人には確信できないものだ、ってことに無自覚な話し方。
言い換えれば、「自分の為に世界が創られたわけではないことを、まだちゃんと理解できてない」
レベルの精神から出てくる物言い。こういうのは早く卒業すべき。プログラミングスキル以前の問題だから。
0908デフォルトの名無しさん
2008/11/07(金) 01:23:10監視が厳しいから善意を装うわけ
最近増えてきたよね
0909デフォルトの名無しさん
2008/11/07(金) 01:46:56とりあえず精神化逝けよwww
0910デフォルトの名無しさん
2008/11/07(金) 02:49:220911デフォルトの名無しさん
2008/11/07(金) 02:55:590912デフォルトの名無しさん
2008/11/07(金) 03:15:570913デフォルトの名無しさん
2008/11/07(金) 03:31:28プログラミング言語の初心者なら歓迎だが
自然言語の初心者はちと困る。
0914デフォルトの名無しさん
2008/11/07(金) 03:59:23のFARってなんですか?
0915デフォルトの名無しさん
2008/11/07(金) 10:06:240916デフォルトの名無しさん
2008/11/07(金) 11:09:44プロジェクトのプロパティでランタイムライブラリを「マルチスレッド (/MT)」としました。
文字セットも「マルチバイト文字」にしてUnicode不使用にしていますが
Win98SEで起動できません。Win9x で起動できる設定は無いのでしょうか?
VC6を中古で買うしかないのですか?
あと、もう一つはC++/CLIのサンプルコードを入力し、こちらはランタイムライブラリを
「マルチスレッド DLL (/MD)」にして、Frameworkは2.0にしました。
ReleaseビルドしたEXEファイルを.NET Framework 2.0インスコ済みのPCに
持って行きましたが、こちらも起動せずです。。。
他にプロジェクトプロパティでいらうとこがあるのでしょうか?
0917デフォルトの名無しさん
2008/11/07(金) 11:15:502005EEをダウンロードしてやってみては
0918デフォルトの名無しさん
2008/11/07(金) 17:02:44thx!.検索できないし、20年前の入門書にも載ってなかった。どんだけ昔のだよw
0919デフォルトの名無しさん
2008/11/07(金) 17:07:550920デフォルトの名無しさん
2008/11/07(金) 17:12:00http://www.google.co.jp/search?hl=ja&q=far++%E6%A7%8B%E9%80%A0%E4%BD%93&lr=
検索できるじゃん。
0921デフォルトの名無しさん
2008/11/07(金) 21:12:40たぶんgoogleを知らなかったんじゃないかな。
0922デフォルトの名無しさん
2008/11/07(金) 21:32:33エラーメッセージを晒せ
0923デフォルトの名無しさん
2008/11/07(金) 21:36:14正しく並んでいるじゃないか。どこもおかしくない。
0924デフォルトの名無しさん
2008/11/07(金) 22:38:40C++/CLI プログラムをWinXP SP2 .NET Framework2.0 SP1 環境に
移動して実行した場合は
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。
このアプリケーションを再度インストールすることにより問題が解決する場合があります」
もちろんビルドはRelease、Frameworkも2.0を選んで行っています。
C言語でつくった小さいコンソールアプリをWin98SEへ移動して実行した場合、
「ファイルには新しいバージョンのWindowsが必要です。Windowsをアップグレードしてください」
「システムに装着されたデバイスは動作していません」
こちらはWinXPであれば別の環境でも動作します。
文字セットは「マルチ バイト文字セットを使用する」を選んでReleaseビルドしました。
スタンダード以上だとディストリビュートウィザードみたいなのが付いてくるんでしょうね・・・
0925デフォルトの名無しさん
2008/11/07(金) 22:43:24前者は、(VC++にSP1が当たっているなら特に)ランタイムがインストールされていないだけだと思う。
http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displaylang=ja
Windows 98で動かないのは仕様。
http://msdn.microsoft.com/ja-jp/library/bb531344.aspx
0926デフォルトの名無しさん
2008/11/07(金) 23:03:24ありがとうございます。
前者は「Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)」をインスコすることで
動作するようになりました。
しかし、Frameworkだけではダメって。。。これってC++/CLIだけですよね?
VBもC#も.net Frameworkだけで動くのにこれでは互換性が低すぎやしませんか?
C++専用のライブラリがあるのでしょうけど、出来ることに大差はないですよね!?
後者については分かりました。
Win9x系で動かしたければ古いコンパイラでビルドするしかなさそうですね。
0927デフォルトの名無しさん
2008/11/07(金) 23:13:39もちろん、MSだって何もしていないわけではなく、
.NET Framework 2.0(SPなし)には、当時最新だった
VC++ 2005(これまたSPなし)のランタイムが付いていた。
.NET 2.0 SP1にVC++ランタイムが入っているかは知らないが、
当時VC++ 2008にSP1は出ていなかったのでやっぱり無理だな。
ちなみに、/clr:safeでビルドすれば、VC++ランタイムを使わない
C#やVB.NETと同等のプログラムにできる。
0928デフォルトの名無しさん
2008/11/07(金) 23:45:10なるほど。つまり.NET Frameworkの次バージョンではVC++2008CRTが
同梱される可能性が高いってことなのですかね。
> /clr:safeでビルドすれば、VC++ランタイムを使わない
確かに出来ました。でも当然使えないクラスや関数が出てくるんでしょうね?
0929デフォルトの名無しさん
2008/11/07(金) 23:57:36ヘッダだけで完結するものは使えるだろうが、
そもそも/clr:safeだとマネージコードしか使えないので、それすらもかなり駄目だろう。
マクロやtypedefくらいだろうな。
0930デフォルトの名無しさん
2008/11/08(土) 00:16:50C++で作った物には不要だよね?
0931デフォルトの名無しさん
2008/11/08(土) 00:27:59私もC++/CLIはマネージコードのみだと思っていたので
.NET Frameworkだけで動くとばかり思ってました。
C++らしさを残してコーディングしたければ、やはりCRTを
入れろということなんですね。
0932デフォルトの名無しさん
2008/11/08(土) 00:36:44それ自体は昔からだったが、
・32ビット版はVC6までファイルが共通で、しかも核となるファイルはWin98辺りからOS付属(msvcrt.dll/mfc42.dll)
・そうでなくてもEXEと同じフォルダに置いておくだけで問題ない(VC8からそれがやや面倒になった)
・みんながSystem32に放り込んでいた大らかな時代だった
というわけで意識する必要がなかった。
0933デフォルトの名無しさん
2008/11/08(土) 00:50:20/clr:safeにすればC#やVBと同等のCRTを使わないアセンブリができる。
pureとmixedの場合はCRTが必要。
ただし.NET Framework自信がCRTを使っているからそのCRTとバージョンがあえばそれが使える。
0934デフォルトの名無しさん
2008/11/08(土) 01:23:16> ・そうでなくてもEXEと同じフォルダに置いておくだけで問題ない(VC8からそれがやや面倒になった)
これってVC2005以降は出来なくなったの?
0935デフォルトの名無しさん
2008/11/08(土) 02:15:39VB6以前はバージョンごとにせっせとランタイムを入れさせられたんだけどね。
セットアップファイルつくって必須コンポーネントに指定しておくのが楽かもね。
0936デフォルトの名無しさん
2008/11/08(土) 02:18:44systemフォルダのDLLが優先されるようになったと思うよ。
たぶん怪しげなアプリとかがwinsockとかuser32とかのラッパーdll配置してるとセキュリティ的によくないからなんだろうけど。
0937デフォルトの名無しさん
2008/11/08(土) 02:42:000. .local ファイルによるサイドバイサイド (Win2KとXPのみ)
1. KnownDlls とそれから間接的に使用されるDLL
2. マニフェストによるサイドバイサイド (XP以降)
3. アプリケーションの exe ファイルが存在するディレクトリ
4. システムディレクトリ
5. 16-bit システムディレクトリ
6. Windows ディレクトリ
7. カレントディレクトリ
8. 環境変数 PATH に設定されてたディレクトリ
(古いWindowsではカレントディレクトリの優先順位はexeのディレクトリの次だった)
0938デフォルトの名無しさん
2008/11/08(土) 02:48:27マニフェストが使用できるXP以降ではマニフェストによるものだけに制限している。
vc2005以降でも普通に作ったDLLやXPより前のOSの場合は>>937のとおり。
なお.NETのアセンブリの場合は全く違うルールとなる。
0939デフォルトの名無しさん
2008/11/08(土) 10:38:33全部静的リンク出来ればいいのに。
Wikipediaに「依存ファイル」って項目作ってみた。
http://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
博覧強記の人多そうだから間違ってないか読んでみて
0940デフォルトの名無しさん
2008/11/08(土) 10:43:560941デフォルトの名無しさん
2008/11/08(土) 10:45:360942デフォルトの名無しさん
2008/11/08(土) 10:54:06>>934
できる。ようするにmanifestファイルも一緒にしないといけないだけなんだけど、なぜか難関と化している。
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-32360.htm
0944デフォルトの名無しさん
2008/11/08(土) 12:00:28正確な用語としての「依存ファイル」て何を指すのか良く分かんないけど、
実行時に動的にリンクされるライブラリって意味なら
共有ライブラリ(shared library。拡張子「.so」)ってのが有って、
静的ライブラリ(static link library。拡張子「.a」)と区別されてる。
でもUnix系の世界では、依存ファイルって言葉は聞かないかなぁ。
0945デフォルトの名無しさん
2008/11/08(土) 12:14:23この短時間で編集したの?すごいな
0946デフォルトの名無しさん
2008/11/08(土) 12:18:20「依存ファイル」じゃ意味が広すぎて何の事か分からない。
0947デフォルトの名無しさん
2008/11/08(土) 12:28:110948デフォルトの名無しさん
2008/11/08(土) 12:35:46ビルド時に必要なヘッダ類も依存ファイル
HTMLから参照される画像ファイルも依存ファイル
こっそり保管しているお宝動画も依存ファイル
0949デフォルトの名無しさん
2008/11/08(土) 12:52:32Makefile で : の右側に書くファイルのことだな。
0950デフォルトの名無しさん
2008/11/08(土) 13:42:30単に「依存関係にあるファイル」のことで術語でもなんでもないよ。
0951デフォルトの名無しさん
2008/11/08(土) 17:37:14それぞれ関連項目を参照すればいいのではないかと。
0952デフォルトの名無しさん
2008/11/08(土) 17:39:20ではなくもっと狭義である旨を書いておけばいいですかね
0953デフォルトの名無しさん
2008/11/08(土) 17:52:480954デフォルトの名無しさん
2008/11/08(土) 18:26:39LD_PRELOAD hell
0955デフォルトの名無しさん
2008/11/08(土) 20:57:290956デフォルトの名無しさん
2008/11/08(土) 21:14:170957デフォルトの名無しさん
2008/11/08(土) 23:18:280958デフォルトの名無しさん
2008/11/08(土) 23:20:070959デフォルトの名無しさん
2008/11/08(土) 23:23:130960デフォルトの名無しさん
2008/11/09(日) 00:10:34人によって基準が異なる。芸術の域。
0961デフォルトの名無しさん
2008/11/09(日) 00:15:140962デフォルトの名無しさん
2008/11/09(日) 00:28:590963デフォルトの名無しさん
2008/11/09(日) 00:38:13iteratorで
0964デフォルトの名無しさん
2008/11/09(日) 02:06:510965デフォルトの名無しさん
2008/11/09(日) 02:18:10しかしそもそも登録順を知る意味が分からない。
0966デフォルトの名無しさん
2008/11/09(日) 08:04:24クラス1の継承クラス2でVirtualでオーバーライドした関数をクラス2継承クラス3でオーバーライドするにはどう書けばいいんですか?
クラス3でVirtualを書けばクラス2とクラス1を無視してクラス1の関数をオーバーライドできるんですか?
0967デフォルトの名無しさん
2008/11/09(日) 08:11:43なんで自分で試さないの?書かないの?
0968デフォルトの名無しさん
2008/11/09(日) 08:28:48A: 才能ある人間として生まれ変わることを期待して首を吊りましょう。
0969デフォルトの名無しさん
2008/11/09(日) 09:38:54派生クラスでVirtualでオーバーライドできると思ってるところでおかしくなってるのかもしれなんだけどおしえてくれーーーー
0970デフォルトの名無しさん
2008/11/09(日) 10:47:040971デフォルトの名無しさん
2008/11/09(日) 11:01:23{
int wlen; wchar_t* wbuf;
wlen = MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0);
wbuf = (wchar_t *)LocalAlloc(LPTR, (wlen+1)*sizeof(wchar_t) );
if( wbuf==NULL ) { return NULL; }
MultiByteToWideChar(CP_ACP, 0, buf, -1, wbuf, wlen+1);
*(wbuf + wlen) = L'\0';
return wbuf;
}
上はマルチ文字をワイド文字に変化する関数、ネットで見つけた
LocalAllocでメモリを確保しているが解放してない
staticを付ければメモリ解放しなくていいの?
あと、何度もこの関数を呼ぶとLocalAllocでメモリ確保され直すのでは?
0972デフォルトの名無しさん
2008/11/09(日) 11:12:10LocalFreeを呼ぶのは、呼び出し側の責任で行ってください。
0973デフォルトの名無しさん
2008/11/09(日) 11:12:34解放したら返り値が使えなくなっちゃうだろ。
mtow の返り値を自分で保持して、使わなくなったら自分で解放しなければならない。
0974デフォルトの名無しさん
2008/11/09(日) 11:26:16こういう関数は解放忘れそうだな
0975デフォルトの名無しさん
2008/11/09(日) 11:34:21生のポインタでやりとりせず、スマートポインタを使用すればいい。
0976デフォルトの名無しさん
2008/11/09(日) 16:02:500977デフォルトの名無しさん
2008/11/09(日) 23:21:08すみ(い)ません、それどうやってやるんですか?
0978デフォルトの名無しさん
2008/11/09(日) 23:24:190979デフォルトの名無しさん
2008/11/09(日) 23:38:51のLocalAllocはmallocじゃ駄目なんですか?
あと、何でstatic関数なんですか?
0980デフォルトの名無しさん
2008/11/09(日) 23:57:37・LocalAlloc()よりmalloc()の方が、汎用性において勝っている。
・どうしても外に公開したい関数以外は、staticにしておいた方がいい。
0981デフォルトの名無しさん
2008/11/10(月) 00:06:15え、すみませんとすいませんのどっちを使ったらいいか分からないって事?
0982デフォルトの名無しさん
2008/11/10(月) 00:08:50ありがとうございました。
この場合は、メモリ開放を考慮して外部ファイルよりアクセス禁止かな
0983デフォルトの名無しさん
2008/11/10(月) 01:12:24>>971を見ただけではC++かどうか分からないと思うんだが。
0984デフォルトの名無しさん
2008/11/10(月) 01:42:10この?:ってなに?どこかで見たようなきがするんだけどなんだっけ
0985デフォルトの名無しさん
2008/11/10(月) 01:43:03三項演算子でぐぐれ
0986デフォルトの名無しさん
2008/11/10(月) 01:47:440987デフォルトの名無しさん
2008/11/10(月) 20:46:07「スマポ」にワロタw
0988デフォルトの名無しさん
2008/11/10(月) 20:54:140989デフォルトの名無しさん
2008/11/10(月) 21:03:250990デフォルトの名無しさん
2008/11/10(月) 21:21:29で、水樹奈々が大学で色々なことをするってコントコーナーがあるんだよ。
「つかめ青春 スマ大 キャンパスライフ」って名前で。
http://dm25.cside.jp/~s25853-1/streaming/img/h2_campuslife.gif
「スマ大」がスマタに見えた。
0991デフォルトの名無しさん
2008/11/10(月) 22:20:49プログラム: http://www.sbcr.jp/books/download/art.asp?newsid=2267
ディレクトリ: /SampleSource/Bison-Flex/CALC/discreate-parser/
書籍のサンプルプログラムをMakeしようとしたところ、
オブジェクトファイルをリンクして実行ファイルを作るステップで以下のようなエラーが出ます。
/usr/lib/libstdc++.so.44.0: undefined reference to 'log'
(以下、'log' の箇所が sqrt, cosh, finitef, cos, tanh, sin, atan2, pow, sinh, log10, exp, tan になっている行がずらずら)
collect2: ld returned 1 exit status
*** Error code 1
おそらく math.h の関数の実体が見つからないというエラーだと思うのですが
libstdc++にそれが入ってないということが有り得るのか、ちょっと分りません。
また、Makefileを書き換えて他のオブジェクトファイルとリンクすれば急場はしのげるかもしれませんが
Makefileを書き換えるにしても、使えそうなオブジェクトファイルに心当たりがないのでお手上げの状態です。
どなたか解決できる方がいたらお願いします。
0992デフォルトの名無しさん
2008/11/10(月) 22:26:000993デフォルトの名無しさん
2008/11/10(月) 22:36:460994デフォルトの名無しさん
2008/11/10(月) 22:45:11math.hの実体はlibstdc++じゃなくて普通libmにあるよ。
cc -lm my.c
とかが一般的な書き方。
0995デフォルトの名無しさん
2008/11/10(月) 22:57:05じゃないとマズいか。
0996デフォルトの名無しさん
2008/11/10(月) 23:19:27Makefileの最後の処理の末尾に -lm を付け加えたら無事コンパイルできました。
ありがとうございました。
0997デフォルトの名無しさん
2008/11/10(月) 23:50:170998デフォルトの名無しさん
2008/11/11(火) 03:46:190999デフォルトの名無しさん
2008/11/11(火) 03:49:45でぐぐると、お前ら自重しろ、ってくらいたくさん
説明してるページが見つかるよ。
1000デフォルトの名無しさん
2008/11/11(火) 04:56:30/ , ‐´ " γ'´ `ヽ, \
/ / Λ _,、 ゙~ヽ ヽ.
/ , ' ; ,i! i;;;;_v';_| l `ヽ. i
/ / / ; / ! :i'| | i | !i ゙j |
ヽ_,,ノ; !: l/| |, Li ! i i! l,| .:| :| |
´フ:: |: |: i'"|_i_,! |_! |_i' /、! ::! .:;| !
/;: |::. l;__! __,,,,_ ` | .::/ ::|;レ'"
!:: {:_j. ''" ` ‐'''‐、,`"''! .:ノ.;ゝ
レ'"l| | , ` ./__/´.::l
/ l.| | ,,,, __ / !ヾ;ノヽ,
/ /i´ ̄|、 l ;゙ /|_| i ; また会おうね〜♪
,!.へi |:. |'゙ヽ、 ゛- ' ._,イ/| i |.へi
!.へ.! l:: │_l゙丶、 __ ,, ‐'l " | :| i,へ.!
!:: l´l'丿 lヾヽi ::|
_,, -‐ '´|:: | l´ ソ | ::|'' ‐- 、_
/ヽ. |::: │ヽ ./ ! .:::! /\
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。