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


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

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



1 名前:デフォルトの名無しさん [2007/06/25(月) 12:01:46 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.38【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1180877635/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

152 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:50:22 ]
>>150
それは、西暦101年10月10日か、01年1月10日10時なのか、1月1日10時10分なのか、101日目、10時10分なのか、
或いはそれ以外の表現なの?
そもそも一覧とはなんなの?

153 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:46:27 ]
お客様の中にESP能力者の方は・・

154 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:48:43 ]
%04d%02d%02d

155 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:59:10 ]
同じ内容の関数を、マルチスレッドで動かして
ログファイルに処理内容を、追加書き込みで
書き出してます。

std::ofstream ofs( FileName.c_str(), std::ios::out|std::ios::app);
ofs << message;

結構、同じタイミングで書き込むときあると思うのですが、
排他処理したほうがいいでしょうか?

そもそも"ファイルが壊れる"っていうのは、どんな壊れ方があるのでしょうか?

真っ白になっちゃうのか、混ぜこぜで書き込みされる。などですか?

156 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:04:07 ]
>>155
混ざります。しかも、通常バッファリングされるので行の途中でもお構いなしに混ざることになります。
運が悪いと、書き込んだ筈の分がロストしたり以前の分がロストしたりするかもしれません。

157 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:06:54 ]
俺の認識な。
ファイルが壊れる = ファイルアクセスに失敗してしまう。 居るように見えて実体が居なかったりする等

マルチスレッドのロギングで、同期取ってない場合
出力が途中で差し込まれたようなデータ列になる等、意図してないフォーマットで出力されてしまう

158 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:07:57 ]
>>156
混ざるのは、構わないと思ってたのですが
無くなるときもあるんですか。

じゃあ、ファイルロックとかで、ロックするようにします。
ありがとうございました。


159 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:09:19 ]
>>157
ふむふむです。勉強になります。
ありがとうございます。

160 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:12:02 ]
>>157
もみもみです。あぁ〜ん♪
感じちゃう?



161 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:24:45 ]
>>155
使っているlibc++がマルチスレッド対応してるなら(今時なら普通してると思うが)
istream/ostreamの関数呼び出しの単位で排他してくれてるはずだ。
つまり、例えばあるスレッドでoperator<<()が呼ばれた場合、その間は
streambufがロックされるので、streambufの内部状態が壊されることが無い。
ヘルプなどのドキュメントに明記されていないなら、ソースを読むんだね。

ただ、排他はあくまで関数呼び出し単位なので、例えば
ofs << n << ":" << s << endl;
のようなことをやっているコードでは、operator<<()が4回呼ばれている間に
他のスレッドからの出力が割り込む可能性は当然あって、その場合は
出力がぐじゃぐじゃになる。
それを避けたければ、常に1行単位で出力関数を呼ぶようにするとよいだろう。
無論自前で排他をするという手もあるが。

162 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:25:36 ]
バッファリングはどーなのよ

163 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:28:01 ]
>>162
バッファリングを管理しているのはstreambufで、これがstdioのFILEの対応物。
i/ostreamはstreambufへのポインタを保持しており、排他はstreambuf自体を
ロックするような形でやっていることが多いはずだ。

つかソース嫁よ。

164 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:31:06 ]
結局スレッドセーフなカスタムストリームを実装するしか無いなね…orz

165 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:35:55 ]
無いなね

166 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:36:41 ]
OTL

167 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:51:26 ]
>>163
別に聞いたわけじゃない。
>>161のように排他してもバッファリングしてたら意味無いだろ、と

168 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:56:17 ]
アンダーバーで始まる関数
_stprintf_s みたいにアンダーバーで始まる関数があるのですが、
アンダーバーで始まる関数には何がしの意味があってアンダーバーをつけてるのですか?
たとえば、MSによって拡張されたことを示すために付けられたとか

169 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:59:44 ]
バッファへの操作込みで排他処理されてるんじゃないのか?

170 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:03:59 ]
>>168
ttp://www.microsoft.com/japan/msdn/security/demo/runtime.aspx



171 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:05:18 ]
って前の _ か
標準じゃないやつにつけるべ

172 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:07:11 ]
MS は独自の拡張関数に _ つけるよね。

173 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:16:35 ]
>>168
アンダーバーから始まる名前は処理系のために予約されている
と規格で決められている

174 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:25:35 ]
>>169
バッファリングされる場合、実際にファイルに書き出されるのはどのタイミングか判って言ってる?

175 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:31:43 ]
それが何か関係あるの?

176 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:33:57 ]
バッファ単位での実書き出し最中に、別スレッド側のバッファ操作はどうなるか

177 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:37:59 ]
失敗するー
だから入出力関数の戻り値は常にチェックしてけって話ですか?

178 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:39:21 ]
同じバッファ使って操作するわけじゃなくて、
別々のバッファで操作しようとしてるの?

179 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:47:23 ]
そりゃ別スレッドなんだからバッファは違うだろう

180 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:49:43 ]
同じファイルに追記するだけなら、
別スレッドで同じオブジェクトを共有して
操作したんでいいんじゃないの?



181 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 15:58:37 ]
OS管理下のファイル本体
 ↑↓
OS管理下のバッファ
 ↑↓
ライブラリ管理下のバッファ

なんとなくライブラリ管理下のバッファの排他がかかってればうまくいきそうだが…

182 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 16:00:15 ]
スレッドセーフ版のライブラリを名乗るからには
そうなってんじゃないの?

183 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 16:59:25 ]
>>167
バッファリングされていようが、何の問題もないよ。
脳内の想像でいい加減なことを言っていないで、ソースを読むかせめて
実験したらどう?

184 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:18:33 ]
>>172
_snprintf() と snprintf() の挙動の違いにしょんぼりした。

185 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:24:42 ]
今のgnustdc++ってMT safeなんかな?
VC++だと、basic_ostream<>::sentryを利用して排他制御をやってるんだが、
3.4.4ぐらいのgccだと、何もやってないように見えるな。

186 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:29:58 ]
もしかして>>167は、同じostreamオブジェクトに複数スレッドから
書き込むのではなく、
同じファイルに複数スレッドから別々のostreamオブジェクト経由で書き込むという
状況を想定してたのか?
無論、その場合はostream内部で排他制御しても何の意味も無いぞ。

187 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:34:42 ]
>>186
>同じファイルに複数スレッドから別々のostreamオブジェクト経由で書き込む
こっちのほうが複雑な排他制御になりそうだな…

188 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:49:39 ]
ログ出力のように行レベルではアトミックであって欲しい&必ず追加書きって
ケースを想定するなら、
例えばUnixだと、O_APPENDでopen()してwrite()一発で1行を書き込むように
している限りは、マルチスレッドだろうがマルチプロセスだろうが、
何の排他制御も要らない。


189 名前:デフォルトの名無しさん [2007/06/29(金) 20:46:52 ]
Visual C++ 2005を使用しています。

xmlの書式で書かれたデータがint型の配列に入っているとします。
その配列から、xmlのあるタグ(例えば<script>という文字列)が
あるかどうかを検索したいと思います。

この場合、どのような方法がお勧め(簡単な実装、早い検索)でしょうか?
以下のいずれかを考えていますが、どうでしょうか?
(1) memcmp()を使いながら、<Script>に対応する数字を探していく

(2) string型に変更し、string.find()で探す

そのほかにお勧めの方法はあるならご教授願います。
(2)をすべきなら、どのようにint→stringに変換するのでしょうか?atoiを使うので
しょうか?





190 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:49:38 ]
> xmlの書式で書かれたデータがint型の配列に入っているとします。
ここから既にイミワカンネェ



191 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:56:43 ]
どうやって読み出してきたら、int型配列になるんだ?
ひょっとして、UCS4なのか?

192 名前:デフォルトの名無しさん [2007/06/29(金) 21:05:29 ]
xml形式のデータがint型の配列に返ってくるメソッドがあるのです。
void method(int *value)
というメソッドを使うと、valueの中にxmlが返ってくるケースがあります。
xmlデータじゃないのも返ってくるのでint の配列で返ってくるのだと
思います。

すいませんが、教えていただけないでしょうか?


193 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:12:22 ]
エスパー募集中☆

194 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:16:38 ]
intにどうやってxmlを入れるんだ?

195 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:20:22 ]
>>192
だから、その int 配列の中にどういう形式で文字列が入ってるんだ? と。
>>191の言うように UNICODE (しかも32ビットの UCS4)なのか。
コード体系によってその "<script>" だって表現の方法が変わってしまうから、
そこが分からなければ意味がないし(というかそれこそがこの問題の本質)、
そこを君が述べていないので「ESP」とか言われてしまうのだよ、と。

196 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:20:27 ]
無理矢理入れます。処女マンコ犯すように

197 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:21:27 ]
>>195
xmlで入ってます。


198 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:22:01 ]
xmlを扱うなら専用ライブラリ使う、もしくは作るべし

199 名前:デフォルトの名無しさん [2007/06/29(金) 21:22:18 ]
ご返信ありがとうございます。
"<?xml" だったら "60 63 120 109 108"とそれぞれの値が
int型の配列に入っております。

String型でデータをもらえればいいのですが、メソッドの仕様の
関係上、int配列でしか受け取れません。


200 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:22:34 ]
もはや釣りにしか見えん



201 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:22:57 ]
なんで言葉で説明しようとするのかね。
データをそのまま貼り付ければいいのに。

202 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:23:48 ]
とりあえず文字列形式に変換してから、
ライブラリ通して解析すべき

203 名前:199 [2007/06/29(金) 21:23:59 ]
Asciiコードで入っております。
みなさんを混乱させる状況にしてしまってすいません。

204 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:24:23 ]
>>199
漢字が入ってる場合はどういう具合に返ってくる?

205 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:24:42 ]
文字化けして返ってきます。

206 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:25:03 ]
>>205
文字化けじゃわからんから、実例で示せ


207 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:27:33 ]
ってか、漢字ってこの話で関係あるのか?

208 名前:199 [2007/06/29(金) 21:27:41 ]
返ってくるデータに漢字は含まれないのでわかりません・・・
みなさんを怒らせてしまってすいません。int→stringの文字列
変換を行うことを考えて実装してみます。
本当にすいませんでした。

209 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:28:29 ]
失礼しちゃうわ!

210 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:29:20 ]
>>207
エンコーディングを判別したかったんだが。
XMLライブラリを使うんなら必要なことだろ。



211 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:30:10 ]
asciiって言ってるじゃん。

212 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:31:09 ]
>>211
漢字は文字化けするとも言ってるが。

213 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:32:17 ]
まあ本人がもういいつってんだからどうでもいいやな。

214 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:32:20 ]
>>212
だから、Asciiだから漢字は含まれていないし、
含まれていたらどうなるか分かりませんって言ってるんでしょ。

215 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:32:33 ]
VCのデバッガで見て言ってたんじゃないかな

216 名前:199 [2007/06/29(金) 21:35:06 ]
たびたび出てきてすいません。
205は私は書いておりません。ASCII文字です。
215さんのおっしゃるとおり、デバッグで確認して
回答していました。


217 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:35:45 ]
失礼しちゃうわ!

218 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:38:01 ]
191が指摘しているとおりなのだが、
intが4バイトならUTF-32、2バイトならUTF-16と見なして構わないはず。
そのまま適当なXMLのライブラリへ投げてしまえ。

219 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:38:19 ]
> xml形式のデータがint型の配列に返ってくるメソッドがあるのです。

> "<?xml" だったら "60 63 120 109 108"とそれぞれの値が
> int型の配列に入っております。

もしかして、単にテキストファイルを読み込んで各文字(ASCII)のコードを
int型の配列に格納しているだけ?
1行ずつとか、ファイル全体とか。XMLの構造に関係なく。

220 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:38:29 ]
質問です。
配列の要素数をキーボードからの入力によって定めさせたい場合、どのような方法があるでしょうか。
int n;
int a[n];
という宣言だとa[n]の宣言がエラーになってしまい、scanfによってnの値を決定した後にa[n]を宣言してみてもやはり「そこで宣言は出来ない」とエラーになってしまいます。
どなたかよろしくお願いします。



221 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:40:02 ]
int *a;
nを読み込む。
a = (int*)malloc(sizeof(int)*n);

222 名前:199 [2007/06/29(金) 21:42:18 ]
219さんのおっしゃる通りでした。xmlなどの概念を理解せずに
使用してしまって混乱を招いてしまったようです。

>もしかして、単にテキストファイルを読み込んで各文字(ASCII)のコードを
>int型の配列に格納しているだけ?
>1行ずつとか、ファイル全体とか。XMLの構造に関係なく。

この場合、XMLのライブラリを使えるのでしょうか?


223 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:42:21 ]
>>220
CかC++か、どっちだい
Cならmalloc/freeで検索
C++ならnew/deleteで検索、もしくはstd::vectorで検索
でもそのレベルだとnを十分大きく取るって解決策の方が
いいかもしれない

224 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:45:24 ]
>>222
もし非ASCII文字が入っていないなら、>>219の言うとおりにやればいい。
と言いたい所だが、sizeof(wchar_t) != sizeof(int)のときに、
int配列をそのまま処理してくれるXMLライブラリってあるのかな。
俺は知らない。

ただ、非ASCII文字が無いのなら、stringなりchar配列に変換するのは
難しいことでも何でもない。受け取ったint配列の値をそのまま
突っ込んでいくだけだからな。

225 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:45:58 ]
>>199
とりあえずXMLのライブラリを探してきて、その仕様を調べること。
仕様を見て理解できないようなら、まずはC言語の基本とかXMLについてもっと勉強すること。

226 名前:199 [2007/06/29(金) 21:47:54 ]
みなさん、本当にありがとうございました
(1) XMLのライブラリを調べる、勉強する
(2) int型配列をStringに変換することを考える

で、がんばってみたいと思います。ありがとうございました。

227 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:49:54 ]
100年後にまた会えるといいな

228 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:50:56 ]
真面目にやれば数日後だと思うけど、まあ頑張れ

229 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:01:06 ]
ところでさっきからStringといっているのが気になるが、
もしかして.NET FrameworkのSystem.Stringのことか?
それならUnmanagedMemoryStream + StreamReader + UTF32Encoding
必要ならそれにXmlTextReaderでいいような気がする。

230 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:04:48 ]
>>168 です。
お前ら、ありがトン。
アンダーバーで始まる関数:
アンダーバーから始まる名前は処理系のために予約されている。
そして、これを利用してMS は独自の拡張関数の名前の最初に_ つけている。
ということだな。



231 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:06:12 ]
違うよ?

232 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:14:24 ]
>>231
230でないけど何が違うか教えてください

233 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:58:49 ]
>ということだな。
違うよ?

234 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 04:16:48 ]
「処理系のために」ではないだろ。

235 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 07:22:32 ]
ハード的なクリックでは無くソフト側で移動・クリック・入力の繰り返しをさせるプログラムを作りたいのですが
MSDNの見方がよく分からなくてmouse_eventを使うかもしれないという程度しかわかりませんでした・・・

使えるAPI・サンプルなどがあったら教えてください

よろしくお願いします

236 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:39:51 ]
SendInput

237 名前:デフォルトの名無しさん [2007/06/30(土) 09:01:14 ]

質問です!!

C言語のボーランドでコンパイルしたら元のメモ帳と、コンパイル後のファイルとって感じでいくつか手元にファイルできますよね。
そのとき作ったメモ帳が消えてしまったのですが(プログラムの実行はできる状態)。
コンパイル後のファイルからもとのメモ帳ってもう見ることができないのでしょうか・・・?

わかる方よろしくお願いします。

238 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:02:16 ]
メモ帳って何だ?

239 名前:デフォルトの名無しさん [2007/06/30(土) 09:03:12 ]
んと、メモ帳にmainやらintやら打ち込んで、ボーランドでコンパイルしてコマンドプロンプトで実行って形でやってます。
そのとき書き込んだメモ帳です。

240 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:11:39 ]
先ず最初に、「メモ(すなわちファイル)」と「メモ帳(アプリ)」を区別するところからはじめる必要がありそうだ。
で、あんたはその「メモ」をなんて名前で保存したんだ? そいつはコマンドプロンプトでdirしても見えないのかい?



241 名前:デフォルトの名無しさん [2007/06/30(土) 09:15:54 ]
dir でも見えないし、元の場所からは特に動かしてないので・・・
お恥ずかしながら消しちゃったみたいなんです・・・・

コンパイルの逆、みたいなことってできないのでしょうか?

242 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 09:22:53 ]
>>241
それは無理。

243 名前:デフォルトの名無しさん [2007/06/30(土) 09:23:43 ]
う・・・・orz

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

244 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:32:14 ]
>>234
>17.4.3.1.2
>Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.
implementationだから処理系でいいんじゃない?
JISの方も処理系て訳されてるし。

245 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:37:12 ]
一応逆コンパイラはあるけど、
元のコードがそのまま出てくるわけじゃないからなあ。

246 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:46:10 ]
デコンパイラでぐぐれ

247 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 18:46:38 ]
スレッドで、複数の引数を受け取りたいとき、
std::vector<std::string>で渡したいと思ってます。

//スレッド関数
void Thread(void* vector){
 std::vector<std::string> *vec=(std::vector<std::string>*)vector; //エラーでません。正しい?
 vec->clear(); //コンパイルできても、例外がどうのと出て止まります。vec.clear()のつもりです
 printf("%d",*vec[0].c_str()); //これだめです
}
○vectorの関数push_buck(),insert(),clear()など、使用したり、
vec[0]、、、の中の値が知りたいのですが、方法ありますでしょうか。

○vec.clear()とかしたいので、左辺にvecのままにして、いろいろ試しました。
std::vector<std::string> vec=(std::vector<std::string>)vector;
これは、コンパイルできませんでした。右辺がおかしいみたいです。どうすれば。。。
----------------------------------------------------------------

○構造体の場合:
vectorがstd::vectorではなく、自分で作った構造体の場合は、
Data *data = (Data *)vector;
data->hoge;
の要領で、できました。
よろしくお願いします。

248 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 18:53:01 ]
>>247
たぶんスレッドに引数渡してるところがおかしい。

249 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 18:54:17 ]
>>247
・C言語の形式のキャストではなく、C++のキャストを使ったほうがいい。
・コール元からThread()に渡したstd::vector<std::string>オブジェクトの寿命は大丈夫?
・vec[0]を見たいなら、std::cout << vec[0]; で良いんじゃない?

250 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:08:19 ]
>>248
複数渡したいとき、構造体か配列などなどとあったので。。。
正直よくわからないです。すみません。

>>249
・C++のキャスト検索してみます。
・std::vector<std::string>オブジェクトの寿命ですか、
 良く、無いものを参照して、プログラム止まります。
 同じ症状なので、これかもしれません!
・vec[0]で、大丈夫ですか。了解しました。
ありがとうございました。



251 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:54:57 ]
>>250
>>249が指摘してるが、多分スタック上に確保したvectorのアドレスそのまま
渡してるだろ。それじゃクラッシュするのは当たり前だ。

252 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:56:01 ]
>>250
ごめん、まちがえた。
× vec[0]
○ (*vec)[0]






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

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

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