- 1 名前:デフォルトの名無しさん [2008/02/20(水) 12:33:41 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.48【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1202141921/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 931 名前:デフォルトの名無しさん [2008/02/27(水) 15:44:52 ]
- 1.1だと、ユーザー情報も送信しないと無理になるんですか
- 932 名前:デフォルトの名無しさん [2008/02/27(水) 15:54:08 ]
- なおらないです どうすればいいですか?
GET /test/read.cgi/livemarket2/1202634378/ HTTP/1.1 Accept: */* Referer: live27.2ch.net/ Accept-Language: ja Host: live27.2ch.net Connection: Keep-Alive HTTP/1.1 400 Bad Request ソース buf="GET " + ko+ " HTTP/1.1\r\n\r\n"; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0); buf="Accept: */*\r\n\r\n"; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0); buf="Referer: http://"+sev+"/"+"\r\n\r\n";; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0); buf="Accept-Language: ja\r\n\r\n"; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0); buf="Host: "+sev+"\r\n\r\n"; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0); buf="Connection: Keep-Alive\r\n\r\n"; cout<<buf; n=send(sock, buf.c_str(), buf.size(), 0);
- 933 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:58:54 ]
- 改行大杉
- 934 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:01:24 ]
- 2回改行するのは最後だけ
- 935 名前:915 mailto:sage [2008/02/27(水) 16:02:42 ]
- >>927
盲点でした。 やっと次の作業に進めそうです。本当にありがとうございます。
- 936 名前:デフォルトの名無しさん [2008/02/27(水) 16:06:31 ]
- サンクス 改行削って上手くいきました
あと受け取るバッファを多くすると返却値を間違えるようなんです どうやれば直りますか? n = recv(sock, &buf[0], 128000, 0); としてnまで表示するとデータ入ってないときがあります
- 937 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:05:30 ]
- めっちゃミジンコの質問させて下さい。
図書館で借りてきた本のページが抜けてて%cはどういう時に使うのか わかりません; %はぐぐれないみたいで困ってます。
- 938 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:08:24 ]
- >>937
www.linux.or.jp/JM/html/LDP_man-pages/man3/printf.3.html 文字じゃね?
- 939 名前:937 mailto:sage [2008/02/27(水) 17:16:21 ]
- >>938
まだ始めたばかりなのでこのサイトはちょっと厳しいです・・・。 文字ということで本を読みすすめてみます。 有難うございました。
- 940 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:49:40 ]
- >>932,936
send も recv も、指定したサイズ未満しか送受信できないことがあるので、 その場合にも対応すること。 あと、エラー処理もちゃんと毎回やること。
- 941 名前:デフォルトの名無しさん [2008/02/27(水) 20:53:29 ]
- HTTPで初めにサイズだけ取得したとして、読む位置をデータの始まりにシークできますか?
初期化からやり直した方がいいですか? データ位置を自前で判別して方がネットワークの負荷は少なくなりますが
- 942 名前:デフォルトの名無しさん [2008/02/27(水) 20:55:33 ]
- 自己解決しました
いったん全部読み込んで、ヘッダとデータを分離してサイズが不一致なら再送にします
- 943 名前:デフォルトの名無しさん [2008/02/27(水) 20:56:50 ]
- すいません。タイトルにふさわしく初歩的な質問ですが、
ポインタはメモリを格納しているアドレスの位置を指す と言いますが、ではそのポインタの情報はどこに格納 されるのでしょうか?
- 944 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:01:14 ]
- 実行時なら、それを格納しているのがポインタ変数。
コンパイル時、&xという記述からどうやってxのアドレスを知るかと言うことなら、 それはコンパイラの仕事、コンパイラが決めること。
- 945 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:08:38 ]
- つまりint とか char とかと同じような感じでアドレスが入ってる変数があるってだけさ
- 946 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:09:38 ]
- ごめん語弊がありますねすいません
(入ってるのアドレスだけじゃないですね)
- 947 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:11:45 ]
- 普通はアドレスだけだと思うが。
メンバポインタとかは別だが。
- 948 名前:デフォルトの名無しさん [2008/02/27(水) 21:12:50 ]
- string x, y="*****"; となっていたとして、
xとyのデータを一致するようにできますか コピーではなくて
- 949 名前:デフォルトの名無しさん [2008/02/27(水) 21:14:24 ]
- int a,b=10;
&a=&b;のような事はできないですよね?
- 950 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:14:35 ]
- string x = "*****", y = x;
という話ではなくて?
- 951 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:16:08 ]
- string だと共用体が使えないから
参照にするしかないな。 string y = "*****", &x = y;
- 952 名前:デフォルトの名無しさん [2008/02/27(水) 21:16:48 ]
- 同一アドレスの同一データにしたいのですが 無理ですよね
- 953 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:18:11 ]
- x も xもポインタにして確保した同じとこさせばいいんじゃね?
- 954 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:19:46 ]
- >>949
アドレス演算子の結果は右辺値だと思った。
- 955 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:21:38 ]
- >>949
int *ap = &a; int *bp = &b; ap = bp;
- 956 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:25:39 ]
- >>952
何でそう言う事がしたいの?
- 957 名前:デフォルトの名無しさん [2008/02/27(水) 21:36:28 ]
- すでに確保された変数のアドレスを書き換えるテクがあるかなと思った
- 958 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:38:06 ]
- アドレスはマシン語にそのまま組み込まれてるんだぜ?
- 959 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:40:37 ]
- 変数は極端な話レジスタに載ってるかも知れないわけで。
string x,y="..."; #define x y
- 960 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:43:17 ]
- string y = "*****", &x = y;
とした場合、最適化で x と y が同一視される可能性はあるんじゃないかな。
- 961 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:47:24 ]
- >>957
変数のアドレスは、変数が確保されたときに固定されるものだろ。 「すでに確保された変数のアドレスを書き換えるテク」を期待する目的がわからん。
- 962 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:50:29 ]
- 論理アドレスくらいなら書き換えることは可能かもしれない。
- 963 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:22:39 ]
- class CSample2{};
class CSample { public: void get( CSample2 *obj_s2 ){obj_s2 = &m_obj_s2 private: CSample2 m_obj_s2; }; main{ CSample1 obj_s1; CSample2 *obj_s2 =NULL; obj_s1.get( obj_s2 ); } これでmain内のobj_s2がobj_s1.m_obj_s2と同じ物を指すようにしたかったのですが、NULLを指したままかわりません。 参照戻しではできたのですが、これで出来ない理由がわからず気持ち悪いです。 どなたか原因のご教授お願いします。
- 964 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:23:37 ]
- vectorに関数ポインタを格納するにはどうしたらいいでしょうか?
vector<bool (*func)(int)> EroeroFunction; ↑<>の中のカッコが悪戯してうまくコンパイルが通らなくて困ってます。 構造体に関数ポインタを入れればなんとかなるんですが、メンバが1つしかないのでなんとも。
- 965 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:27:29 ]
- かなりのFAQ。引数経由でポインタを戻すなら、ポインタのポインタかポインタ参照か
どっちかつかえ。 < void get( CSample2 *obj_s2 ){obj_s2 = &m_obj_s2 > void get( CSample2 *&obj_s2 ){obj_s2 = &m_obj_s2;} > void get( CSample2 **obj_s2 ){*obj_s2 = &m_obj_s2; }
- 966 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:27:58 ]
- >>963
get関数内でobj_s2を書き換えても、呼び出し側のobj_s2は書き換わらない。 関数に引数を渡す際の基本だろ? ポインタを書き換えたいなら、ポインタをアドレス渡しでもすればいい。 void get( CSample2** ppobj_s2 ) { *ppobj_s2 = &m_obj_s2; } obj_s1.get( &obj_s2 );
- 967 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:29:45 ]
- >>964
vector<bool (*)(int)> じゃないの?
- 968 名前:デフォルトの名無しさん [2008/02/27(水) 22:33:46 ]
- vector<char>って後方に同じ型を連結できますか
そういう関数ありますか
- 969 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:34:45 ]
- >>968
言ってる意味が分からない。
- 970 名前:デフォルトの名無しさん [2008/02/27(水) 22:35:22 ]
- push_backでは一つしか増やせません 一度に増やすやつないですか
- 971 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:36:14 ]
- >>968
std::copyとstd::back_inserterを組み合わせるんじゃねーの?
- 972 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:36:42 ]
- >>968
こういうこと? vector<char> v1, v2; v1.insert(v1.end(), v2.begin(), v2.end()); // v1の末尾にv2の全要素を追加
- 973 名前:デフォルトの名無しさん [2008/02/27(水) 22:37:22 ]
- vector<int> x,y;
x={1,2,3} y={4,5,6} x.push_back(y)={1,2,3,4,5,6} こういうやつです
- 974 名前:デフォルトの名無しさん [2008/02/27(水) 22:39:20 ]
- それでできますかサンクス
- 975 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:41:49 ]
- まんまinsertでいいんじゃね?
- 976 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:42:56 ]
- insertやね
operator+=を外部に定義しておくと便利かも
- 977 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:47:04 ]
- 要素の連結か、要素ごとの+=か曖昧なので、そんなのいらんかも
- 978 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:07:18 ]
- C言語なんですが
配列でポインタ表現を使ってアクセスしてインクリメントようと思って *(array+i)++としたら'++'には左辺値が必要です、とエラーが出てきました これは配列で宣言したからだと思うんですが ポインタで宣言した場合は値が飛び飛びになるので、*(array+i)みたいな表現できないでしょうし どうすればいいでしょう?
- 979 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:09:43 ]
- (*(array+i))++;
++*(array+i); 変なことになったらとりあえず優先順位を疑うのは基本。
- 980 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:10:19 ]
- *((array++)+i) // arrayを増やす場合
*(array+i++) // iを増やす場合
- 981 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:11:35 ]
- *(array+i) と array[i] は優先順位以外は等価。
- 982 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:12:23 ]
- >>979
できました。ありがとうございます。 優先順位って今まで全然気にしてませんでしたので 今後注意して行こうと思いますorz
- 983 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:14:10 ]
- >>979 と >>980 のどちらを意図してるんだろうか。
それはともかく、array[i]++; と書けばいいのに 何でそうしないのか本気で理解できない。
- 984 名前:デフォルトの名無しさん [2008/02/27(水) 23:27:31 ]
- i++[array]と書くのが漢
- 985 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:30:03 ]
- 漢すぎるwwwwww
- 986 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:39:05 ]
- (*(array + i))++; ←等価→ array[i]++; ←等価→ i[array]++;
array++[i]; ←等価→ *((array++)+i) ←等価→ i[array++]; i++[array]; ←等価→ array[i++]; ←等価→ *(array+i++);
- 987 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:40:43 ]
- はじめて見た。
誰だよこんな書き方見つけた奴……
- 988 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:43:59 ]
- *(E1+E2) と E1[E2] の挙動は等価だと規格に書いとるべ。
*(array+i) と *(i+array) が等価なのと同じく array[i] と i[array] も等価だべ。
- 989 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:44:30 ]
- array[i]を*(array+i)の糖衣構文とすることを発案した人が真っ先に見つけただろうな。
で、誰?
- 990 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:45:42 ]
- (i % 16)["0123456789ABCDEF"]
- 991 名前:デフォルトの名無しさん [2008/02/27(水) 23:45:54 ]
- string x,y; N=0; x.resize(0); に対して
x+=y; と memcpy(&x[N],&y[0], y.size()); N+=y.size; は同じのはず yがバイナリデータだと上が失敗することが多いです
- 992 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:47:15 ]
- >>990
すげぇwwww感動したwwwwwww
- 993 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:49:12 ]
- >>991
x のメモリ確保はどこ行った。
- 994 名前:デフォルトの名無しさん [2008/02/27(水) 23:50:05 ]
- メモリ確保はあらかじめしておいてください あと最後にNでresizeも
- 995 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:50:49 ]
- >>991
stringに文字列以外入れるなよ。 あと、x.capacity() >= y.size() でないとmemcpyがメモリ壊すぞ。
- 996 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:51:46 ]
- >>994
同じというなら、同じになるコードを書けよ。
- 997 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:53:00 ]
- 変な入門書で配列のとこにすぐにその記法が説明してあったからできるのは知ってたけど、
できる理由は全然考えたことがなくて、今はじめて理解したw
- 998 名前:デフォルトの名無しさん [2008/02/27(水) 23:53:19 ]
- zipファイルを少しずつyに入れてからxに足し込むんですけど
memcpyの方は書き出して復元できますが、+=はまれに正常でほとんど壊れます 原因はなんでしょう
- 999 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:55:24 ]
- >>998
vectorを使わずstringを使ったから。
- 1000 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:55:32 ]
- なんで文字列じゃないものをstringに入れるんだ。
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|