【初心者歓迎】C/C++室 Ver.49【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/02/20(水) 12:33:41ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.48【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1202141921/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0092デフォルトの名無しさん
2008/02/21(木) 18:18:34HTTPであれば、レスポンスにContent-Lengthを入れれば、クライアント
がそのサイズの受信でデータ終了だと思ってくれる。
0094デフォルトの名無しさん
2008/02/21(木) 20:25:25C#使った方がいいと思うってもう遅いけど
0095デフォルトの名無しさん
2008/02/21(木) 21:40:29デルファイ言語の環境のまま、言語だけC++
0096デフォルトの名無しさん
2008/02/21(木) 21:41:130097デフォルトの名無しさん
2008/02/21(木) 21:41:440098デフォルトの名無しさん
2008/02/21(木) 21:45:500099デフォルトの名無しさん
2008/02/21(木) 21:48:34環境を書けよ。でないと答えようが無い
0100デフォルトの名無しさん
2008/02/21(木) 21:50:15パソコンから取り外せば全容量使えるよ。
0101デフォルトの名無しさん
2008/02/21(木) 21:50:590102デフォルトの名無しさん
2008/02/21(木) 21:53:400103デフォルトの名無しさん
2008/02/21(木) 21:54:02毒餃子を食わす国の人ですか?
0104デフォルトの名無しさん
2008/02/21(木) 21:54:36GlobalMemoryStatus で調べろ
0105デフォルトの名無しさん
2008/02/21(木) 21:57:570106デフォルトの名無しさん
2008/02/21(木) 22:27:360107デフォルトの名無しさん
2008/02/21(木) 22:31:160108デフォルトの名無しさん
2008/02/21(木) 22:32:24JpegのIJGライブラリみたいなものがあると嬉しいのですが
0109デフォルトの名無しさん
2008/02/21(木) 22:32:32長い思考の旅の後には、失敗しないからチェックは不要という結論になるよ。
0110デフォルトの名無しさん
2008/02/21(木) 22:43:28bad_alloc 例外をつかまえる。
0111デフォルトの名無しさん
2008/02/21(木) 22:45:29by Sutter
0112デフォルトの名無しさん
2008/02/21(木) 22:48:480113デフォルトの名無しさん
2008/02/21(木) 22:52:19たくさんのレスが付くと思う。
そして、>>109にたどり着くと思う。
0114デフォルトの名無しさん
2008/02/21(木) 22:56:42大抵はそのまま異常終了するしかない事が多い。
ダウンするとマズいシステムの場合は
そうも言ってられないが。
0115デフォルトの名無しさん
2008/02/21(木) 23:19:36timeGetTime関数を呼ぶだけの関数を作成したのですが、
ビルドで以下のエラーになりました。
LNK2019: 未解決の外部シンボル __imp__timeGetTime@0 が関数 "int __cdecl MainRoutine(void)" (?MainRoutine@@YAHXZ) で参照されました。
ソースは以下になります。
#include <windows.h>
#include <mmsystem.h>
int MainRoutine()
{
DWORD dwTime;
dwTime = timeGetTime();
return 0;
}
VC2008 Express Editionを使用しています。
他に何か設定が必要なのでしょうか?
0116デフォルトの名無しさん
2008/02/21(木) 23:20:200117デフォルトの名無しさん
2008/02/21(木) 23:29:07すいません。記述漏れです。
以下の設定はすでにしていました。
「ツール」-「オプション」-「プロジェクトおよび〜」-
「VC++ディレクトリ」-「ライブラリリンク」にて、
C:\Program Files\Microsoft Platform SDK\Lib
ほかのライブラリのリンクが必要なのですか?
必要な場合、どこのライブラリをリンクすればいいでしょうか?
0118デフォルトの名無しさん
2008/02/21(木) 23:30:16リンクするライブラリを選択するオプションではない。
何をリンクすればいいかはググれ。
0119デフォルトの名無しさん
2008/02/21(木) 23:38:58今は、ライブラリのリンクが出来てなかったと言うことなんで、
リンクの方法、リンクするライブラリについては、また調べてみます。
回答ありがとうございました。
0120デフォルトの名無しさん
2008/02/21(木) 23:46:57if(i==(1||2||3||4||5))
switch(i){
case (1||2||3||4||5):
break;
}
0121デフォルトの名無しさん
2008/02/21(木) 23:48:330122デフォルトの名無しさん
2008/02/21(木) 23:49:51C++ で operator をオーバーライドすれば可能かもしれませんね
0123デフォルトの名無しさん
2008/02/21(木) 23:54:50caseの中身は定数でよろしく
0124デフォルトの名無しさん
2008/02/22(金) 00:01:36switch(i){
case 1: case 2: case 3: case 4: case 5:
break;
}
0125デフォルトの名無しさん
2008/02/22(金) 00:02:21ifの方も駄目?
0126デフォルトの名無しさん
2008/02/22(金) 00:03:55ああ、caseでbreak書かなかったらそのまま下までいくからそういう風に書いたらいいのか
0127デフォルトの名無しさん
2008/02/22(金) 00:06:120128デフォルトの名無しさん
2008/02/22(金) 00:07:40文法的に間違いではないが、お前の期待する動作はしないと思う
(1||2||3||4||5)は常に真となり、それとiの値が等しいかどうか
だよ?これ
0129デフォルトの名無しさん
2008/02/22(金) 00:08:18ifの方も意図しているであろう動作はしない。
ただしコンパイルは通る。警告くらい出してくれるかも知れんが・・・
0130デフォルトの名無しさん
2008/02/22(金) 00:11:14コンパイル通ってたから上手く動いてると思ってそのままつかってたよ…
0131デフォルトの名無しさん
2008/02/22(金) 00:19:40C#も124みたいにcaseラベルを並べるのはありだと聞いた。
0132デフォルトの名無しさん
2008/02/22(金) 00:22:160133デフォルトの名無しさん
2008/02/22(金) 00:27:11int a=10; のようにです
0134デフォルトの名無しさん
2008/02/22(金) 00:28:19同時に出来る訳が無い。
初期化なら別だが。
0135デフォルトの名無しさん
2008/02/22(金) 00:30:450136デフォルトの名無しさん
2008/02/22(金) 00:30:520137デフォルトの名無しさん
2008/02/22(金) 00:32:34int main() {
class Test{
int x;
public:
Test (int y) {x=y;}
print(){ cout<<x<<endl; } };
Test a=10;
a.print();
return 0;
}
0138デフォルトの名無しさん
2008/02/22(金) 00:35:31a.print();
a=20;
a.print();
もできるんですね C++はすごいですね
0139デフォルトの名無しさん
2008/02/22(金) 00:37:27基本的に引数1つのコンストラクタには explicit つけとけ。
0140デフォルトの名無しさん
2008/02/22(金) 00:42:12コピーコンストラクタとoperator =をコンパイラ任せにしているのが嫌だね。
0141デフォルトの名無しさん
2008/02/22(金) 00:43:15コンパイラ任せでいいよ。
0142デフォルトの名無しさん
2008/02/22(金) 00:48:46>>139
なんでですか?
(本当に理由を知りたいです。)
0143デフォルトの名無しさん
2008/02/22(金) 00:59:34#include <vector>
class Vector {
public:
Vector(size_t size) : m_array(size) { }
void output() const {
for(std::vector<int>::const_iterator it = m_array.begin();
it != m_array.end(); ++it)
{
std::cout << *it << ' ';
}
std::cout << std::endl;
}
private:
std::vector<int> m_array;
};
void Foo(const Vector& v) {
v.output();
}
int main() {
Foo(5); ←←←←←←←
}
これが直感的な挙動ではないことは分かってもらえると思う。
でも、コンパイル通るし、正常に動く。
explicit つけるとこういう時にコンパイルエラーにできる。
それでも Foo(Vector(5)); なら可だが、これは問題ないと感じてくれると思う。
0144デフォルトの名無しさん
2008/02/22(金) 00:59:53どんなバグがでるのですか?
呼び出し側なにか影響でうるのですか?
0145デフォルトの名無しさん
2008/02/22(金) 01:01:23input が変更されていない事を前提とした処理を書いてしまうかもしれない。
あるいは、そういう処理があるにも関わらず、
それより前の地点で input を変更してしまうかもしれない。
そうなっていないか注意して探すよりは、
引数をいじらない方が良い。
0146デフォルトの名無しさん
2008/02/22(金) 01:08:460147デフォルトの名無しさん
2008/02/22(金) 01:09:55あんま意味ないと思ってやめた。
0148デフォルトの名無しさん
2008/02/22(金) 01:12:29なるほど
別にいじること自体がやばいわけじゃなくて
いじると間違い起こす原因となる可能性があるわけですね
ありがとうございました
0149デフォルトの名無しさん
2008/02/22(金) 01:14:13コピペじゃ済まなくなる。
0150デフォルトの名無しさん
2008/02/22(金) 01:14:45fall throughは禁止じゃなかったっけ
何かキーワードがあったと思う
情報が古いかもしれんが
0151デフォルトの名無しさん
2008/02/22(金) 01:19:06caseが連続する場合のみOK。その他は禁止。スレ違い。
0152デフォルトの名無しさん
2008/02/22(金) 01:19:25ありがとうございます。
explicitは、暗黙の変換を抑制する機能なのですね。
しかしなんか上の例のコードは、すごくC++書き慣れた人な感じがしました。
0153デフォルトの名無しさん
2008/02/22(金) 01:20:21>>124のように空のcaseラベルを並べたときはフォールスルーできる。
http://msdn2.microsoft.com/ja-jp/library/06tc147t.aspx
スレ違いすまん。
0154133
2008/02/22(金) 02:00:16intのようにコンストラクタではできませんでした
test y = f( x );
のようにです fはクラスを返します intではないです
0155デフォルトの名無しさん
2008/02/22(金) 02:11:42testというのがクラスなら、testにconst test&型の引数を1つ取るコピーコンストラクタを作るんだ。
0156デフォルトの名無しさん
2008/02/22(金) 02:14:250157デフォルトの名無しさん
2008/02/22(金) 07:02:49何度も言うが、それは代入じゃない。
初期化だ。
初期化の場合、= を使っていても
test y = f(x); は test y(f(x)); と同義。
0158デフォルトの名無しさん
2008/02/22(金) 07:24:55はじめににインストールする言語?をどれにするかがわかりません。
どういう意味かというと
ボーランド、とかマイクロソフトのvisual studioとかどれにすればいいのかです。
有料とか無料とかいろいろありますね。
できたら将来有料ソフトを販売可能なものがいいです。
今考えているのはマイクロソフトのVC++を考えているのですが、
C++とVC++は違うとか
どっかで聞いたりもしたので
初心者にはちんぷんかんぷんでわかりません。
よろしくお願いします
0159デフォルトの名無しさん
2008/02/22(金) 07:30:50VC++ は C++ を使って開発を行うためのツールの名前。
0160デフォルトの名無しさん
2008/02/22(金) 08:05:40ありがとうございます。
0161デフォルトの名無しさん
2008/02/22(金) 11:08:37VC++のコードはほかのものでは動かせないものが多い
0162デフォルトの名無しさん
2008/02/22(金) 11:42:07このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが
0163デフォルトの名無しさん
2008/02/22(金) 11:45:450164デフォルトの名無しさん
2008/02/22(金) 11:57:29VCにしとけ。
0165デフォルトの名無しさん
2008/02/22(金) 11:59:00利点としてはランタイムとかの導入がいらないだけで
0166デフォルトの名無しさん
2008/02/22(金) 12:21:11gcjって使ってる人います?
ttp://pc11.2ch.net/test/read.cgi/tech/1046627795/l50
0167デフォルトの名無しさん
2008/02/22(金) 12:31:13IEBrowser->Document.charset="shift_jis";
error C2039: 'charset' : '_com_ptr_t<class _com_IIID<struct IDispatch,&struct __s_GUID _GUID_****> >' のメンバではありません。
0168167
2008/02/22(金) 12:35:30この様に定義してあります
SHDocVw::IWebBrowser2Ptr IEBrowser;
IEBrowser.CreateInstance( __uuidof( SHDocVw::InternetExplorer ) );
0169デフォルトの名無しさん
2008/02/22(金) 12:51:05こうでは?
IEBrowser->Document->charset= L"shift_jis";
0170167
2008/02/22(金) 12:55:40error C2039: 'charset' : 'IDispatch' のメンバではありません。
になりました・・・
0171167
2008/02/22(金) 13:05:44そこだけVBAスクリプトを呼び出す事にします
0172デフォルトの名無しさん
2008/02/22(金) 13:08:27じゃあこれはどう?
SHDocVw::IHTMLDocument2Ptr document = IEBrowser->Document;
docment->charset = L"shift_jis";
0173167
2008/02/22(金) 13:13:130174デフォルトの名無しさん
2008/02/22(金) 13:23:380175デフォルトの名無しさん
2008/02/22(金) 13:33:26#import <mshtml.tlb>した上で、MSHTML::IHTMLDocument2Ptrだ。
0176デフォルトの名無しさん
2008/02/22(金) 13:34:40ナントカPtr(の実態_com_ptr_t<>)のコンストラクタや代入演算子の中でQueryIntefaceが行われている。
0177デフォルトの名無しさん
2008/02/22(金) 14:08:38numeric_limits<int>::max()とか、そういう書き方はないですか?
0178デフォルトの名無しさん
2008/02/22(金) 14:13:43# define M_PI 3.1415926535
#endif
0179デフォルトの名無しさん
2008/02/22(金) 14:30:07計算して出したいなら4*atan(1.0);
0180デフォルトの名無しさん
2008/02/22(金) 14:32:270181デフォルトの名無しさん
2008/02/22(金) 15:02:49ありがとうございます。
#include <cmath>
としてたのですが、M_PIでコンパイル通りました。
0182デフォルトの名無しさん
2008/02/22(金) 15:58:04実数→整数変換ですが、
double dval;
char buf[80];
int ival;
dval = -19.99; /* -19.99〜19.99 */
dval = dval * 100.0;
sprintf(buf,"%.0f",dval);
ival = atoi(buf);
printf( "%f %d %d\n",dval,ival,(int)dval);
/* printf( "%f %d %d\n",dval,ival,(int)ceil(dval)); */
ivalを求める場合、上記の方法が一番精度が良いのですが
これ以外に方法はありますでしょうか?
ceil() や floor() 使っても誤差が出てしまいます。
0183デフォルトの名無しさん
2008/02/22(金) 16:05:51それ四捨五入してるだけだぞ
そんなんでいいなら ival = floor(dval * 100 + 0.5) とでもやればいい
元々 -19.99 という値自体が誤差を持ってるから、これを無くすことは出来ない
printf("%.20f\n", -19.99); とかやってみればわかる
本当に誤差が嫌なら、浮動小数点を使わない、という方法しかない
0184182
2008/02/22(金) 16:12:26早速のRESありがとう御座います。
>そんなんでいいなら ival = floor(dval * 100 + 0.5) とでもやればいい
了解です。これで行きたいと思います。
どうもありがとう御座いました。
0185デフォルトの名無しさん
2008/02/22(金) 16:53:31f(char *ch){
delete ch;
ch=new char[10];
strcpy(ch,"ssssssss");
}
main(){
char *ce=new char[2];
f(ce); cout<<ce<<endl;
char ch[]="test";
f(ch); cout<<ch<<endl;
}
0186デフォルトの名無しさん
2008/02/22(金) 16:55:190187デフォルトの名無しさん
2008/02/22(金) 16:59:46ごめんfで何がしたいのか分からない。
まぁ俺の第六感で回答すると、ポインタのポインタ使えばいいんじゃね
0188デフォルトの名無しさん
2008/02/22(金) 17:05:10をコード内で書き換えてたとえば100個まで使えるようにしたいんです
はじめのaは破棄できなくてもいいので、a[50]とかにアクセスできるようになりませんか
0189デフォルトの名無しさん
2008/02/22(金) 17:07:460190デフォルトの名無しさん
2008/02/22(金) 17:08:43設計が間違ってるよ
>>185 みたいにすると激しく管理が難しい事になる
0191デフォルトの名無しさん
2008/02/22(金) 17:12:10どうしたらいいですか
■ このスレッドは過去ログ倉庫に格納されています