次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part136
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bf81-LHz9)
2018/06/07(木) 23:40:12.36ID:GNQuDMaA0773デフォルトの名無しさん (ワッチョイ e7c3-WPlw)
2018/07/08(日) 23:16:50.92ID:w/p0hjmq0 テキストのパースなんてそれこそperlやpythonにやらせろよ
そんなところが速度にクリティカルに効いててゴリゴリ高速化しなきゃいけないのは作りがおかしい
そんなところが速度にクリティカルに効いててゴリゴリ高速化しなきゃいけないのは作りがおかしい
774デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/08(日) 23:30:01.88ID:yMyBSsTod775デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/08(日) 23:41:27.36ID:yMyBSsTod >>767
読み込み以外、ライブラリなんか使わずに全て自分のコードにしてみようか
そうすれば色々とわかるはず
読み込みは16MBずつとかにすれば速い
出力先はファイル?メモリ上?
数値は32bit floatで保存するとして
文字列は?
そのままの形で使う?
読み飛ばす?
読み込み以外、ライブラリなんか使わずに全て自分のコードにしてみようか
そうすれば色々とわかるはず
読み込みは16MBずつとかにすれば速い
出力先はファイル?メモリ上?
数値は32bit floatで保存するとして
文字列は?
そのままの形で使う?
読み飛ばす?
776デフォルトの名無しさん (ワッチョイ 5f34-M0Jq)
2018/07/08(日) 23:43:29.21ID:q7fGM+tb0777デフォルトの名無しさん (ワッチョイ a7d2-UVFs)
2018/07/08(日) 23:47:06.61ID:ib3y3idC0 SQLite はメモリ上にDBを構築できるので試してみるのもいいでしょう。
起動時のテーブルの初期化が大変だけど、あとはサクサク。
起動時のテーブルの初期化が大変だけど、あとはサクサク。
778デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/08(日) 23:54:44.54ID:IBdHDRbb0 な、知恵遅れたちはテキトーなことばっかりいってる
こんなゴミみたいなコードで速攻でかけるのに
こんなゴミみたいなコードで速攻でかけるのに
779デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/08(日) 23:55:41.66ID:IBdHDRbb0 ゴミはめちゃくちゃしょうもない簡単なコードを
いちいち複雑にする
そしてもだれもメンテナンスできなくなる
いちいち複雑にする
そしてもだれもメンテナンスできなくなる
780デフォルトの名無しさん (ワッチョイ 67bd-aMDz)
2018/07/08(日) 23:56:30.09ID:Jzinsuog0 自分への間違い指摘は全部無視するのが半角スタイル
781デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/08(日) 23:57:09.03ID:IBdHDRbb0 オレはなにも間違ったこと書いてない
782デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/08(日) 23:57:21.06ID:yMyBSsTod 数値の行は以下みたいなドロくさい処理を4回繰り返せば良い
unsigned int n = 0;
do {
unsigned char ch = (unsigned char)(*data++ - '0');
if (ch <= 9)
{
n = n * 10 + ch;
}
else {
break;
}
} while (true);
unsigned int n = 0;
do {
unsigned char ch = (unsigned char)(*data++ - '0');
if (ch <= 9)
{
n = n * 10 + ch;
}
else {
break;
}
} while (true);
783デフォルトの名無しさん (ワッチョイ 7f81-Gfd3)
2018/07/08(日) 23:57:59.70ID:fRwyFHTq0 サーバーなんだから、普通にDB使えるだろう
784デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/08(日) 23:59:14.83ID:IBdHDRbb0 だいたい分かるわ
やっぱりなPGなんか低学歴しかやらない
やっぱりなPGなんか低学歴しかやらない
785デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/09(月) 00:00:03.01ID:EkQ+mvr8d 単に統計情報が知りたいだけならわざわざ重くしてから処理をする必要もないし
DBに入れるにしても解析しないとダメだろ
DBに入れるにしても解析しないとダメだろ
786デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:03:17.82ID:c1VUAguL0 たとえば1行目なんかこんなしょうもないのでとれる
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type_t, unsigned char const** pct_next) {
unsigned char const* c_buf = buf;
for (; !isspace(*c_buf); ++c_buf) ;
if (!::strncmp((char const*)buf, TYPE_STRING, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_STRING;
} else if (!::strncmp((char const*)buf, TYPE_INT_TO_FLOAT, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_INT_TO_FLOAT;
} else {
fprintf(stderr, "氏ねヴォケ\n");
return -1;
}
pt_baka_type_t->u_records = strtoul((char const*)c_buf, (char**)&c_buf, 10);
++c_buf;
*pct_next = c_buf;
return 0;
}
はっきりいってな、2行目以降の数値も文字列もやりかたなんか同じだからな
ドカタ作業
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type_t, unsigned char const** pct_next) {
unsigned char const* c_buf = buf;
for (; !isspace(*c_buf); ++c_buf) ;
if (!::strncmp((char const*)buf, TYPE_STRING, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_STRING;
} else if (!::strncmp((char const*)buf, TYPE_INT_TO_FLOAT, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_INT_TO_FLOAT;
} else {
fprintf(stderr, "氏ねヴォケ\n");
return -1;
}
pt_baka_type_t->u_records = strtoul((char const*)c_buf, (char**)&c_buf, 10);
++c_buf;
*pct_next = c_buf;
return 0;
}
はっきりいってな、2行目以降の数値も文字列もやりかたなんか同じだからな
ドカタ作業
787デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:08:20.49ID:c1VUAguL0 ゴミは口だけは達者
しかもアリエナイ頭ワルイことばっかりいうからな
しかもアリエナイ頭ワルイことばっかりいうからな
788デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/09(月) 00:08:49.29ID:EkQ+mvr8d わざわざ標準ライブラリを使うために小細工しなくても良いんじゃないの?
何がどういう順番で書いてあるかはわかってるようだし無駄に重くしなくても
何がどういう順番で書いてあるかはわかってるようだし無駄に重くしなくても
789デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:10:37.45ID:c1VUAguL0 きっとなオマエが書いたゴミコードより標準ライブラリのほうが
バグもないし早いと思うわ
バグもないし早いと思うわ
790デフォルトの名無しさん (ワッチョイ e7c3-WPlw)
2018/07/09(月) 00:11:39.32ID:UZv1uWMQ0 いかにもバッファはみ出してそうなきったねえコードですね
いまどきポインタで文字列処理すんじゃねえよ老害
いまどきポインタで文字列処理すんじゃねえよ老害
791デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:12:54.25ID:c1VUAguL0 な、知恵遅れはこんなとこで書いたサンプルに
エラー処理が入ってると思ってる
もうねコレだから低学歴は困るわけ
エラー処理が入ってると思ってる
もうねコレだから低学歴は困るわけ
792デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:13:53.01ID:c1VUAguL0 日本のPGは低学歴しかいないのが
このスレで何度も証明されてる
このスレで何度も証明されてる
793デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/09(月) 00:17:45.37ID:EkQ+mvr8d 学歴コンプか?
794デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:19:33.01ID:c1VUAguL0 低学歴に反応してるということは
図星なんだろ
もう分かってるからな
悪いけどなレスみれば低学歴なのは
残念ながらすぐに分かってしまう
低学歴特有のレスというのがある
隠そうとしてもムダ
図星なんだろ
もう分かってるからな
悪いけどなレスみれば低学歴なのは
残念ながらすぐに分かってしまう
低学歴特有のレスというのがある
隠そうとしてもムダ
795デフォルトの名無しさん (ワッチョイ e7c3-WPlw)
2018/07/09(月) 00:21:50.74ID:UZv1uWMQ0 ポインタいじくり回してメモリ境界踏み壊すコードを書くのが大好きなすうぱあぷろぐらまあ様は
無駄な高学歴の方が多いという個人的な印象
無駄な高学歴の方が多いという個人的な印象
796デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:23:07.75ID:c1VUAguL0 あのレベルでポインタいじくりまわしてる?
どんだけオツムが弱いねん・・・
どんだけオツムが弱いねん・・・
797デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:26:52.35ID:c1VUAguL0 ようするにポインタが理解できてない
こんなのがプログラマさまきどってるのが日本だからな
そらなこんなのがコードいじくってたら
障害ばっかりおきるハズだわ
こんなのがプログラマさまきどってるのが日本だからな
そらなこんなのがコードいじくってたら
障害ばっかりおきるハズだわ
798デフォルトの名無しさん (ワッチョイ 5f34-M0Jq)
2018/07/09(月) 00:28:24.71ID:Z1S7bos70 未だにこんな化石みたいなヤツが居たことに驚きなんだが
799デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/09(月) 00:29:58.95ID:1qBtnID4d >>786みたいに、何度も何度もスキャンするような無駄の多いコードが速いわけないだろ
800デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:30:58.58ID:c1VUAguL0 低学歴は自分を大きく見せようとするからな
5f34-M0Jq ← コイツなんか典型的といっていい
わかってしまう
きっとコイツは専門卒
残念なことにレスみればすぐに分かる
だてにいままでいろんなゴミを相手にしてきたワケではない
5f34-M0Jq ← コイツなんか典型的といっていい
わかってしまう
きっとコイツは専門卒
残念なことにレスみればすぐに分かる
だてにいままでいろんなゴミを相手にしてきたワケではない
801デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:32:10.58ID:c1VUAguL0 何度もスキャン?
一回しかスキャンしてないぞ
まずコードがよめてない
ポインタは後ろにしか進んでないのに
一回しかスキャンしてないぞ
まずコードがよめてない
ポインタは後ろにしか進んでないのに
802デフォルトの名無しさん (ワッチョイ e7c3-WPlw)
2018/07/09(月) 00:34:20.75ID:UZv1uWMQ0 strncmpが中で何やってるか知らないんだねかわいそうに
803デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:34:44.55ID:c1VUAguL0 あ
もしかして
必要な1回の文字列判定を何度もスキャンとかいってるの?
もしかして
必要な1回の文字列判定を何度もスキャンとかいってるの?
804デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:36:07.46ID:c1VUAguL0 低学歴によると
通常の字句解析と構文解析を一緒にするのか
なるほどな
通常の字句解析と構文解析を一緒にするのか
なるほどな
805754 (アウアウウー Sa0b-sule)
2018/07/09(月) 00:37:52.14ID:oMFJCZ8na たくさんの情報大変参考になります。
サンプルコードもありがたいです。
実際に動かしながらどう動いているのか調べてみます。
>>775
読み込みを16MB単位でやってみます。
ファイルに出力することはなくて、読み込んだ情報をGUIでクリックして、
こっちをクリックするとこんな結果になっている、こっちだとこの結果、
というようなビューアを作ろうとしています。
文字列も重要な情報なので、
struct info{
サンプルコードもありがたいです。
実際に動かしながらどう動いているのか調べてみます。
>>775
読み込みを16MB単位でやってみます。
ファイルに出力することはなくて、読み込んだ情報をGUIでクリックして、
こっちをクリックするとこんな結果になっている、こっちだとこの結果、
というようなビューアを作ろうとしています。
文字列も重要な情報なので、
struct info{
806デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 00:41:56.28ID:AazuLIX60 それならそもそもファイル全体を解析しておく必要もないのでは?
807デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:43:27.81ID:c1VUAguL0 よしオマエはいい子のようだから
STRINGの部分をとるコードもあげよう
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_b;
unsigned char const* c_buf_e = buf;
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
c_buf_b = c_buf_e;
for (; *c_buf_e != '\x0a'; ++c_buf_e) ;
// c_buf_b から始まる c_buf_e - c_buf_b の長さが取得する文字列
fprintf(stdout, TYPE_STRING":%.*s\n", c_buf_e - c_buf_b, c_buf_b); // ← ココでとれる
++c_buf_e;
}
return 0;
}
STRINGの部分をとるコードもあげよう
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_b;
unsigned char const* c_buf_e = buf;
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
c_buf_b = c_buf_e;
for (; *c_buf_e != '\x0a'; ++c_buf_e) ;
// c_buf_b から始まる c_buf_e - c_buf_b の長さが取得する文字列
fprintf(stdout, TYPE_STRING":%.*s\n", c_buf_e - c_buf_b, c_buf_b); // ← ココでとれる
++c_buf_e;
}
return 0;
}
808デフォルトの名無しさん (ワッチョイ 5f2b-ExT7)
2018/07/09(月) 00:49:09.36ID:4jZgSN4s0 >>786
入力が不正の場合にメモリフォルト起こすコードは絶対受け付けられない
入力が不正の場合にメモリフォルト起こすコードは絶対受け付けられない
809デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 00:49:43.29ID:AazuLIX60 だね
810デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:50:43.58ID:c1VUAguL0 バリデーションチェックは自分で入れるにきまってるだろ
アホちゃうかコイツラ
アホちゃうかコイツラ
811デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:51:20.09ID:c1VUAguL0 そういうレスしかできないからな
程度が知れるわけ
低学歴らしい
程度が知れるわけ
低学歴らしい
812デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 00:51:52.89ID:AazuLIX60 言い訳が見苦しい
813デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:53:03.02ID:c1VUAguL0 いいわけ?
マジでいってるわけ?
ホントな頭悪い
マジでいってるわけ?
ホントな頭悪い
814デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:53:36.22ID:c1VUAguL0 典型的な低学歴のレスといっていい
815デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 00:55:36.81ID:AazuLIX60 コードでも学歴でも何でも良いけど
勝負するなら受けるよ
勝負するなら受けるよ
816デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:56:18.28ID:c1VUAguL0 ハナクソがオレとなんの勝負すんの
817デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 00:58:04.11ID:AazuLIX60 日本語も読めないのか
818デフォルトの名無しさん (ワッチョイ a781-5SLP)
2018/07/09(月) 00:58:34.17ID:VjVxTpnI0 職場もこんな雰囲気?
819デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 00:59:12.63ID:c1VUAguL0 ハナクソは
学歴も書いてないし
コードも書いてない
で?
学歴も書いてないし
コードも書いてない
で?
820デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:01:13.46ID:c1VUAguL0 低学歴知恵遅れは
コミュニケーション能力もゼロに近い
そもそも唐突に
なにがしたいのか
なにがいいたいのか
意味が分からないワケ
コミュニケーション能力もゼロに近い
そもそも唐突に
なにがしたいのか
なにがいいたいのか
意味が分からないワケ
821デフォルトの名無しさん (ワッチョイ 5f2b-ExT7)
2018/07/09(月) 01:02:30.85ID:4jZgSN4s0 いまどき自前の字句解析処理をCでポインタ使って書くなんて
バッファ境界のチェックとか面倒だし絶対ミスるからやめた方が良いって話なのに
いきなりエラー処理完全無視したコード出されてドン引きです
バッファ境界のチェックとか面倒だし絶対ミスるからやめた方が良いって話なのに
いきなりエラー処理完全無視したコード出されてドン引きです
822デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:03:34.22ID:c1VUAguL0 どんびきするとかしないとかは
オマエの勝手だからな
オマエの勝手だからな
823デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 01:04:20.90ID:AazuLIX60 >>821
ポインタも扱えないようなレベルならC++は使わない方が良い
ポインタも扱えないようなレベルならC++は使わない方が良い
824デフォルトの名無しさん (ブーイモ MM7f-CyKI)
2018/07/09(月) 01:04:49.68ID:ZGamhF5dM あんまりゴミだから自信満々なc1VUAguL0がコード貼ってるのに気が付かなかったな、ログ読み直しちゃったよ
学歴は書いてないみたいだけど
学歴は書いてないみたいだけど
825デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 01:05:34.06ID:AazuLIX60826デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:05:40.33ID:c1VUAguL0 scanと解析に時間がかかるとかいってるから
オレはベストプラクティスをだしてる
オレはベストプラクティスをだしてる
827デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:07:55.27ID:c1VUAguL0 まず目的が理解できてないからな
828デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 01:08:10.00ID:AazuLIX60 あれでベストか
829デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:10:13.35ID:c1VUAguL0 ベストじゃないと思うなら
ベストな方法はれよ
臆病者なんか
ベストな方法はれよ
臆病者なんか
830デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 01:10:21.54ID:AazuLIX60 勝負に目的ねえ
まあ別にやらなくても結果はわかるけど
まあ別にやらなくても結果はわかるけど
831デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:10:46.49ID:c1VUAguL0 はよベストなもんはれよ
832デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 01:19:02.82ID:AazuLIX60833デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:54:56.54ID:c1VUAguL0 やっぱりバカの限界というやつだな
オミヤゲだけはって寝よ
1行目とるヤツ
さっきとかわらず
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type_t, unsigned char const** pct_next) {
unsigned char const* c_buf = buf;
for (; !isspace(*c_buf); ++c_buf) ;
if (!::strncmp((char const*)buf, TYPE_STRING, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_STRING;
} else if (!::strncmp((char const*)buf, TYPE_INT_TO_FLOAT, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_INT_TO_FLOAT;
} else {
fprintf(stderr, "氏ねヴォケ\n");
return -1;
}
pt_baka_type_t->u_records = strtoul((char const*)c_buf, (char**)&c_buf, 10);
++c_buf;
*pct_next = c_buf;
return 0;
}
オミヤゲだけはって寝よ
1行目とるヤツ
さっきとかわらず
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type_t, unsigned char const** pct_next) {
unsigned char const* c_buf = buf;
for (; !isspace(*c_buf); ++c_buf) ;
if (!::strncmp((char const*)buf, TYPE_STRING, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_STRING;
} else if (!::strncmp((char const*)buf, TYPE_INT_TO_FLOAT, c_buf - buf)) {
pt_baka_type_t->baka_type = BAKA_TYPE_INT_TO_FLOAT;
} else {
fprintf(stderr, "氏ねヴォケ\n");
return -1;
}
pt_baka_type_t->u_records = strtoul((char const*)c_buf, (char**)&c_buf, 10);
++c_buf;
*pct_next = c_buf;
return 0;
}
834デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:56:57.90ID:c1VUAguL0 2行目以降のSTRINGとれるヤツ
※ 次のバッファの継続ポインタの格納をしてなかったので追加
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_b;
unsigned char const* c_buf_e = buf;
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
c_buf_b = c_buf_e;
for (; *c_buf_e != '\x0a'; ++c_buf_e) ;
// c_buf_b から始まる c_buf_e - c_buf_b の長さが取得する文字列
fprintf(stdout, TYPE_STRING":%.*s\n", c_buf_e - c_buf_b, c_buf_b); // ← ココでとれる
++c_buf_e;
}
*pct_next = c_buf_e; // ← たりなかったので追加
return 0;
}
※ 次のバッファの継続ポインタの格納をしてなかったので追加
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_b;
unsigned char const* c_buf_e = buf;
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
c_buf_b = c_buf_e;
for (; *c_buf_e != '\x0a'; ++c_buf_e) ;
// c_buf_b から始まる c_buf_e - c_buf_b の長さが取得する文字列
fprintf(stdout, TYPE_STRING":%.*s\n", c_buf_e - c_buf_b, c_buf_b); // ← ココでとれる
++c_buf_e;
}
*pct_next = c_buf_e; // ← たりなかったので追加
return 0;
}
835デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 01:59:16.59ID:c1VUAguL0 2行目以降のTYPE_INT_TO_FLOATとれるヤツ
int get_data_int_to_float(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_e = buf;
int32_t i_val[4]; // とりあえずのテキトーにいれた一時バッファ
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
for (uint32_t j = 0; j < 4; ++j) {
i_val[j] = strtoul((char const*)c_buf_e, (char**)&c_buf_e, 10);
}
++c_buf_e;
fprintf(stdout, TYPE_INT_TO_FLOAT":%d,%d,%d,%d\n", i_val[0], i_val[1], i_val[2], i_val[3]); // ← ココでとれる
}
*pct_next = c_buf_e;
return 0;
}
int get_data_int_to_float(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next) {
unsigned char const* c_buf_e = buf;
int32_t i_val[4]; // とりあえずのテキトーにいれた一時バッファ
for (uint32_t i = 0; i < ct_baka_type->u_records; ++i) {
for (uint32_t j = 0; j < 4; ++j) {
i_val[j] = strtoul((char const*)c_buf_e, (char**)&c_buf_e, 10);
}
++c_buf_e;
fprintf(stdout, TYPE_INT_TO_FLOAT":%d,%d,%d,%d\n", i_val[0], i_val[1], i_val[2], i_val[3]); // ← ココでとれる
}
*pct_next = c_buf_e;
return 0;
}
836デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 02:01:59.87ID:c1VUAguL0 とりあえずのテキトーな宣言
#define TYPE_STRING "STRING"
#define TYPE_INT_TO_FLOAT "INT_TO_FLOAT"
typedef enum __ENUM_BAKA_TYPE {
BAKA_TYPE_STRING,
BAKA_TYPE_INT_TO_FLOAT,
BAKA_TYPE_UNKNOWN
} BAKA_TYPE;
typedef struct __tag_baka_type_t {
BAKA_TYPE baka_type;
uint32_t u_records;
} t_baka_type_t;
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type, unsigned char const** pct_next);
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next);
int get_data_int_to_float(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next);
#define TYPE_STRING "STRING"
#define TYPE_INT_TO_FLOAT "INT_TO_FLOAT"
typedef enum __ENUM_BAKA_TYPE {
BAKA_TYPE_STRING,
BAKA_TYPE_INT_TO_FLOAT,
BAKA_TYPE_UNKNOWN
} BAKA_TYPE;
typedef struct __tag_baka_type_t {
BAKA_TYPE baka_type;
uint32_t u_records;
} t_baka_type_t;
int get_type(unsigned char const* buf, t_baka_type_t* pt_baka_type, unsigned char const** pct_next);
int get_data_string(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next);
int get_data_int_to_float(unsigned char const* buf, t_baka_type_t const* ct_baka_type, unsigned char const** pct_next);
837デフォルトの名無しさん (ワッチョイ 0780-Rmg1)
2018/07/09(月) 02:03:33.03ID:c1VUAguL0 コレでとりあえず動かせる
int main(int argc, char** argv) {
unsigned char const* buf = (unsigned char const*)
"STRING 3\x0a"
"This is pen.\x0a"
"hoge piyo\x0a"
"hello world.\x0a"
"INT_TO_FLOAT 9\x0a"
"12345 1000 10 12\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a";
unsigned char const* c_buf = buf;
t_baka_type_t t_baka_type;
// 実際の処理ではt_baka_type.baka_typeをswitchで分岐しながら処理することになる
get_type(c_buf, &t_baka_type, &c_buf);
get_data_string(c_buf, &t_baka_type, &c_buf);
get_type(c_buf, &t_baka_type, &c_buf);
get_data_int_to_float(c_buf, &t_baka_type, &c_buf);
}
int main(int argc, char** argv) {
unsigned char const* buf = (unsigned char const*)
"STRING 3\x0a"
"This is pen.\x0a"
"hoge piyo\x0a"
"hello world.\x0a"
"INT_TO_FLOAT 9\x0a"
"12345 1000 10 12\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a"
"101 101 999999 444\x0a";
unsigned char const* c_buf = buf;
t_baka_type_t t_baka_type;
// 実際の処理ではt_baka_type.baka_typeをswitchで分岐しながら処理することになる
get_type(c_buf, &t_baka_type, &c_buf);
get_data_string(c_buf, &t_baka_type, &c_buf);
get_type(c_buf, &t_baka_type, &c_buf);
get_data_int_to_float(c_buf, &t_baka_type, &c_buf);
}
838デフォルトの名無しさん (ワッチョイ e7c3-WPlw)
2018/07/09(月) 09:54:17.47ID:UZv1uWMQ0 ろくなエラーチェックもしてないと自分で白状してるゴミコードを誰が動かすと思うのか
839デフォルトの名無しさん (ワッチョイ 672d-CsAW)
2018/07/09(月) 10:25:08.16ID:iaaXEW9a0 5chに貼ってしまった以上、権利的にジムしか動かせないなーw
840デフォルトの名無しさん (アウアウカー Sa1b-PAUf)
2018/07/09(月) 11:04:11.17ID:K7fYzOo4a __の後に大文字は予約されてるはずでは?
841デフォルトの名無しさん (ワッチョイ 47b3-rubz)
2018/07/09(月) 11:49:18.73ID:gGpmJBA50 そこ突っ込むなら他にも色々あると思うが
なんでC++でtypedef struct/enumなの、とかなんで文字列がunsigned charなの、とか
メタプログラミングじゃない構造体の型名に_tとか付けるな、とか
なんでC++でtypedef struct/enumなの、とかなんで文字列がunsigned charなの、とか
メタプログラミングじゃない構造体の型名に_tとか付けるな、とか
842デフォルトの名無しさん (アウアウウー Sa0b-UVFs)
2018/07/09(月) 13:05:01.50ID:igQMhEfYa ざっと見たけどすごいスレだな
10年ぐらい前だったらこういうこともありかなって思った時期があるけど今はもうそんな時代じゃない
で大部分レスができてしまう
10年ぐらい前だったらこういうこともありかなって思った時期があるけど今はもうそんな時代じゃない
で大部分レスができてしまう
843デフォルトの名無しさん (スッップ Sd7f-SFkP)
2018/07/09(月) 13:18:07.24ID:4W5c2ICHd 名前の付け方はどうせそれぞれの環境に合わせるだろうからどうでもいいけど
中途半端な最適化が良くないな
今回は用途もデータ構造もわかっているし
目的が高速化なわけだから
中途半端な最適化が良くないな
今回は用途もデータ構造もわかっているし
目的が高速化なわけだから
844デフォルトの名無しさん (ワッチョイ 87b3-oY+s)
2018/07/09(月) 15:16:51.81ID:jLUHXtTZ0 >>842
多次元配列 (boostを使わない場合) は?
多次元配列 (boostを使わない場合) は?
845デフォルトの名無しさん (ワッチョイ 87b3-q+oR)
2018/07/09(月) 15:23:55.96ID:tG10WBhN0 boostを積極的に使っていこう。
846デフォルトの名無しさん (ワッチョイ 5f7f-KMj/)
2018/07/09(月) 16:10:51.38ID:OMEWQnbN0847デフォルトの名無しさん (ワッチョイ 87b3-q+oR)
2018/07/09(月) 17:19:12.55ID:tG10WBhN0 壮絶ゲームズ株式会社。
848デフォルトの名無しさん (ワッチョイ 87b3-q+oR)
2018/07/09(月) 17:19:46.15ID:tG10WBhN0849754 (アウアウウー Sa0b-sule)
2018/07/09(月) 20:38:18.02ID:FCmEWxOPa ご連絡おそくなりすみません。
たくさんのサンプルありがとうございます。
今日はファイル読み込みの対応ができなかったので明日このスレを見ながら試してみようと思います。
ちなみにフォーマットはSTRING行が先にきて、次にINT_TO_FLOAT行がきます。
STRINGで始まり、INT_TO_FLOATで最後は終わります。
後出しの情報になり申し訳ありません。
>>786 でどっちが来るかの判定までしていただいていたので一応ご連絡しておきます。
STRING 2
This is pen.
hello world.
INT_TO_FLOAT 1230
100 100 110 110
101 101 200 200
〜あと1228行
STRING 5
hoge piyo
foobarbaz
It is a July 9 today
It rained all day today
INT_TO_FLOAT 830
100 100 110 110
101 101 200 200
〜あと828行
たくさんのサンプルありがとうございます。
今日はファイル読み込みの対応ができなかったので明日このスレを見ながら試してみようと思います。
ちなみにフォーマットはSTRING行が先にきて、次にINT_TO_FLOAT行がきます。
STRINGで始まり、INT_TO_FLOATで最後は終わります。
後出しの情報になり申し訳ありません。
>>786 でどっちが来るかの判定までしていただいていたので一応ご連絡しておきます。
STRING 2
This is pen.
hello world.
INT_TO_FLOAT 1230
100 100 110 110
101 101 200 200
〜あと1228行
STRING 5
hoge piyo
foobarbaz
It is a July 9 today
It rained all day today
INT_TO_FLOAT 830
100 100 110 110
101 101 200 200
〜あと828行
850754 (アウアウウー Sa0b-sule)
2018/07/09(月) 20:49:04.01ID:FCmEWxOPa すみません、 >>849 のSTRING 5の部分は4行になってますね。
この場合 STRING 4 になります。。
この場合 STRING 4 になります。。
851デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 20:58:02.33ID:AazuLIX60 作って実験してみたよ
一行に4個の数字がある行を
適当な数値を乗算して構造体のvectorに入れていく
ファイル上の位置も格納するので
間の文字列も必要な時に表示出来る
うちの環境だと
読み込みだけで77.9秒
解析だけで24.3秒
読み込みと解析合わせて78.1秒
アプリはシングルスレッドだけど
勝手にOSが先読みしてくれてるのかな?
読み込み単位は2次キャッシュに確実に収まる1MBくらいが良さそう
一行に4個の数字がある行を
適当な数値を乗算して構造体のvectorに入れていく
ファイル上の位置も格納するので
間の文字列も必要な時に表示出来る
うちの環境だと
読み込みだけで77.9秒
解析だけで24.3秒
読み込みと解析合わせて78.1秒
アプリはシングルスレッドだけど
勝手にOSが先読みしてくれてるのかな?
読み込み単位は2次キャッシュに確実に収まる1MBくらいが良さそう
852デフォルトの名無しさん (アウアウカー Sa1b-PAUf)
2018/07/09(月) 21:10:32.06ID:jdPfoelBa STRINGとINT_TO_FLOATは何か関連性はあるの?
853デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:10:56.23ID:AazuLIX60 2次じゃなくて3次
struct LOG {
float num[4];
uint64_t line_start;
uint64_t line_end;
};
こんな構造体に入れていくようにしてみた
文字列はクリックした時にファイルを読みに行けば良いよね
struct LOG {
float num[4];
uint64_t line_start;
uint64_t line_end;
};
こんな構造体に入れていくようにしてみた
文字列はクリックした時にファイルを読みに行けば良いよね
854デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:12:07.34ID:AazuLIX60 STRING n の後にn行文字列
INT_TO_FLOAT n の後にn行数値
これが交互にくる
ってことでしょ
INT_TO_FLOAT n の後にn行数値
これが交互にくる
ってことでしょ
855デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:13:59.28ID:AazuLIX60 数値に対応する何か(グラフ?)をクリックすると
その周囲の文字列と数値が表示出来れば良いのかな?
と思った
その周囲の文字列と数値が表示出来れば良いのかな?
と思った
856デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:15:34.95ID:AazuLIX60 文字列の解析は速く出来そうだから
あとはUIに凝ってくださいな
あとはUIに凝ってくださいな
857デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:21:01.41ID:AazuLIX60 数値も文字列も数行ずつかと思ったけど
1000行とかになるのか
数値ブロック、文字列ブロックは
それぞれ平均何行くらい?
1000行とかになるのか
数値ブロック、文字列ブロックは
それぞれ平均何行くらい?
858デフォルトの名無しさん (アウアウカー Sa1b-PAUf)
2018/07/09(月) 21:22:46.55ID:jdPfoelBa メモリが大変な事になりそうなのでstringとint_to_floatの行のアドレスだけ取得して、
必要になった時に読みに行ってintからfloatに変換すれば?
必要になった時に読みに行ってintからfloatに変換すれば?
859デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:26:46.46ID:AazuLIX60 floatの配列は別に用意して
struct LOG {
uint32_t str_start;
uint32_t str_end;
uint32_t str_line;
uint32_t num_start;
uint32_t num_end;
};
みたいな、
ブロックごとの構造体に入れていく方がいいのかな?
struct LOG {
uint32_t str_start;
uint32_t str_end;
uint32_t str_line;
uint32_t num_start;
uint32_t num_end;
};
みたいな、
ブロックごとの構造体に入れていく方がいいのかな?
860デフォルトの名無しさん (アウアウカー Sa1b-PAUf)
2018/07/09(月) 21:27:53.33ID:jdPfoelBa vector<pair<size_t, size_t>> baka;//stringの開始位置とint_to_floatの開始位置をペアで管理。
861デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:29:34.68ID:AazuLIX60 適切なデータの持ち方はUIの全体表示の仕様次第と言うことになる
862デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:33:55.24ID:AazuLIX60 >>806に対して反応が無いから
数値情報が事前に必要なのかと思ったが
数値情報が事前に必要なのかと思ったが
863baka (アウアウカー Sa1b-PAUf)
2018/07/09(月) 21:36:11.40ID:jdPfoelBa あと気になったのはGUIに表示するのはstringの一行目?
864デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 21:43:08.83ID:AazuLIX60 1ブロック平均500行
1行平均30文字
でも100万ブロックある
全体画面で文字列は表示しないんじゃ?
1行平均30文字
でも100万ブロックある
全体画面で文字列は表示しないんじゃ?
865デフォルトの名無しさん (ワッチョイ 5f4c-EHpb)
2018/07/09(月) 21:58:36.33ID:lKzPjQ7Y0 初回DBに突っ込む
初回レコードのインデックスを作る
初回レコードのインデックスを作る
866デフォルトの名無しさん (ワッチョイ 5fb3-C8Iw)
2018/07/09(月) 22:41:30.68ID:Xc+Rjkat0 最低限のパースを実施して各レコードのオフセットを配列に入れて必要になった時に解析して表示すればいいだけかと
867デフォルトの名無しさん (ワッチョイ 4750-SFkP)
2018/07/09(月) 22:43:45.27ID:AazuLIX60 同じ事を何度も書かなくて良い
868デフォルトの名無しさん (ワッチョイ 6783-sule)
2018/07/09(月) 22:49:34.81ID:tJIkM3K40 やっとおまえらもXMLが糞遅い理由を理解したか。
869デフォルトの名無しさん (ワッチョイ 5fbd-c6cw)
2018/07/09(月) 23:26:25.24ID:Kh8JJTJK0870754 (アウアウウー Sa0b-sule)
2018/07/10(火) 00:11:54.08ID:L9+HOK/Ta >>851
テストまでしていただいだきありがとうございます。
1分ちょっとならとてもいい感じです。
なるほどDRAMよりも高速なCPU内のキャッシュを有効に使うと効果的ってことですね。
そんなこと今まで考えたこともなかったです。勉強になります。
>>854
ご推察の通りです。
>>857
文字列の方はせいぜい10行〜20行です。
数値の方は何万行にもなったりします。
>>858
メモリは10GBつかっても問題にならないくらい潤沢に使えると思うので、まずは速度重視で行こうと思っています。
>>861,862
すみません昨日書き込みエラーになって書き込めなかったのでそのままでした。
クリックするたびに毎回int->float演算したら1項目で何万行もあったりするので
読み込み時に演算しておいた方がよいかなと思っていました。
>つづきます
テストまでしていただいだきありがとうございます。
1分ちょっとならとてもいい感じです。
なるほどDRAMよりも高速なCPU内のキャッシュを有効に使うと効果的ってことですね。
そんなこと今まで考えたこともなかったです。勉強になります。
>>854
ご推察の通りです。
>>857
文字列の方はせいぜい10行〜20行です。
数値の方は何万行にもなったりします。
>>858
メモリは10GBつかっても問題にならないくらい潤沢に使えると思うので、まずは速度重視で行こうと思っています。
>>861,862
すみません昨日書き込みエラーになって書き込めなかったのでそのままでした。
クリックするたびに毎回int->float演算したら1項目で何万行もあったりするので
読み込み時に演算しておいた方がよいかなと思っていました。
>つづきます
871754 (アウアウウー Sa0b-sule)
2018/07/10(火) 00:20:12.97ID:L9+HOK/Ta >>863
全部のフォーマットは複雑になってくるので簡易的なフォーマットをと思って出していましたが
説明していくと細かい話になってきましたのでもう少し具体的なものを書きます。
テストまでしてもらっているのに変わってすみません。。
-------------------------------
SECTION_NAME @
11200 11200 2 Jun 9 23:23:00 2018 A
This is pen. B
hello world. B
x 1 2 C
100 1 -2000 10
101 10 -2001 10
y 2 4
-100 10000
-101 10100
x 3 28
QQ subname -1 0 0 1 -21000000 600000 2 D
100 100 110 110
100 100 110 110
〜あと26行〜
SECTION_NAME E
@GUI表示する
A11200がx or yの個数、3カラム目がテキスト行の個数、それ以降は捨てる。11200のところは1の時もあれば100万超えることもある
BGUI表示する
Cこれが非常に多く、ひたすら繰り返される。x,yはランダムでくる。
1カラム目はx or y固定。x=次行に来る数値は4カラム。y=2カラム
2カラム目は1からインクリメントしていき、Aの11200回出てくる。カウント数値
3カラム目は次行から始まる数値行が何行かの数値
Dx or yの次の行にたまにこの行があります。この行も使いますが、ちょっと複雑なのでまずはスキップで。
Eここからまた@の繰り返し、要するにファイルの最後はCのところで終わる。
-------------------------------
全部のフォーマットは複雑になってくるので簡易的なフォーマットをと思って出していましたが
説明していくと細かい話になってきましたのでもう少し具体的なものを書きます。
テストまでしてもらっているのに変わってすみません。。
-------------------------------
SECTION_NAME @
11200 11200 2 Jun 9 23:23:00 2018 A
This is pen. B
hello world. B
x 1 2 C
100 1 -2000 10
101 10 -2001 10
y 2 4
-100 10000
-101 10100
x 3 28
QQ subname -1 0 0 1 -21000000 600000 2 D
100 100 110 110
100 100 110 110
〜あと26行〜
SECTION_NAME E
@GUI表示する
A11200がx or yの個数、3カラム目がテキスト行の個数、それ以降は捨てる。11200のところは1の時もあれば100万超えることもある
BGUI表示する
Cこれが非常に多く、ひたすら繰り返される。x,yはランダムでくる。
1カラム目はx or y固定。x=次行に来る数値は4カラム。y=2カラム
2カラム目は1からインクリメントしていき、Aの11200回出てくる。カウント数値
3カラム目は次行から始まる数値行が何行かの数値
Dx or yの次の行にたまにこの行があります。この行も使いますが、ちょっと複雑なのでまずはスキップで。
Eここからまた@の繰り返し、要するにファイルの最後はCのところで終わる。
-------------------------------
872754 (アウアウウー Sa0b-sule)
2018/07/10(火) 00:23:35.36ID:L9+HOK/Ta すみません、上記QQはQQという固定文字です。
行頭が"Q"のときはこの行という判定で良いと思います。
>>859,860
格納先は構造体に入れようと思っていて、下記のようにテキスト行も入れようかなと思っていました。
struct x_or_y{
char type; // x or y
int num; // Cの2カラム目
float list;
};
struct elem{
char section_name;
char comments;
array系の何かの型 x_or_y_array; // 配列にしておくと(Cの2カラム目-1)で簡単にアクセスできそう
};
行頭が"Q"のときはこの行という判定で良いと思います。
>>859,860
格納先は構造体に入れようと思っていて、下記のようにテキスト行も入れようかなと思っていました。
struct x_or_y{
char type; // x or y
int num; // Cの2カラム目
float list;
};
struct elem{
char section_name;
char comments;
array系の何かの型 x_or_y_array; // 配列にしておくと(Cの2カラム目-1)で簡単にアクセスできそう
};
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★12 [BFU★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★3 [蚤の市★]
- 中国・国連大使「日本側は反省せず、発言の撤回拒否」 書簡を国連事務総長に送る [♪♪♪★]
- 高市政権の経済環境、アベノミクスと対極 インフレ・円安・金利上昇 [蚤の市★]
- 【NHK】受信料の未払い督促を10倍に強化… 支払い拒否が続くと民事手続きも 「カーナビも受信料いただきます」方針 [冬月記者★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap600
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1807
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap599
- とらせん IP
- 福島競馬3回5日目
- こいせん 全レス転載禁止
- 【速報】高市、ヨハネスブルグに到着! [219241683]
- 習近平、高市早苗にブチギレ [931948549]
- 小野田大臣「それ正式なデータですか?報道ベースですよね」(10万いいね) [237216734]
- 日本人「春節(旧正月)イベントをやめろ!ここは日本だ」有識者「日本も元々は春節祝ってましたよ」 [165981677]
- 日本人がよくやる「誤解を招いた」という発言、中国語ではあなたが間違っているという意味で翻訳されますます火に油を注いでる模様 [709039863]
- このお寿司カキフライセットに1000円出せますか?
