1 名前:sage [2025/04/26(土) 10:34:58.41 ID:pbPDl6lv0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ C++相談室 part165 https://mevius.5ch.net/test/read.cgi/tech/1698705458/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
448 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 18:48:20.68 ID:/yOBM7d0d.net] スレ違い。
449 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 19:08:02.78 ID:x4CLaAtVM.net] >>444 みたいな書き込み、完全にスレチ このスレのみならず、板自体が壊れてしまう。
450 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 01:01:04.29 ID:Gvg9upbV0.net] hissi.org/read.php/tech/20250622/NGFYUVNZT0cw.html 毎回こことPythonスレだけ荒らしてるアホ
451 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 01:12:15.09 ID:Btl+IikW0.net] 統失の間でもPythonとC++は認知されてるってことでしょ 名誉ですなぁ
452 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 14:29:01.81 ID:zsxUyp330.net] C++でpythonのライブラリを作るのが気持ちいいかなみたいな。 ん? 普通はpythonのライブラリって何で書かれているんだろう。
453 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 16:02:13.08 ID:n3O4Zcz+M.net] >>450 Rustスレにも投稿されてたで。
454 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 09:31:18.32 ID:17zM306Da.net] pythonのモジュールはpythonでも描けるが もちろんCでも描けるしC++でも描ける 最近はRustで描くのが楽で良い
455 名前:デフォルトの名無しさん [2025/06/24(火) 17:31:46.42 ID:Sa2uRHN0H.net] Rustは良い言語かもしれんが、自分には 必要ない。
456 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 18:59:56.02 ID:FRc1H2/gM.net] >>455 同意
457 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 19:19:29.25 ID:8wBejQ5/0.net] >>454 なんで、AIはPythonで書かれるんだろうな 謎だな…
458 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 19:22:51.87 ID:hfqdv+Ay0.net] Rustに静的ダックタイプ入ったら使うかどうか考える。 設計をカッチリできるプロジェクトでもなければRustはキツくない? c++もコンセプト制約変数とか入らんかな。 変数レベルで静的ダックタイプにして、クラス継承は無くしたい。
459 名前:はちみつ餃子 mailto:sage [2025/06/24(火) 19:44:21.82 ID:s2rFPvAe0.net] C++26 にはリフレクションがようやく入る見込みで、これを使えばダックタイピングのような仕組みをライブラリで実現できる。
460 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 20:15:46.49 ID:S1fYPTVc0.net] >>457 モジュールを書く人とAIを書く人が別だからじゃろ
461 名前:はちみつ餃子 mailto:sage [2025/06/24(火) 20:45:25.03 ID:s2rFPvAe0.net] AI の専門家がプログラミングの専門家というわけでもないしな。
462 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 20:49:18.38 ID:8wBejQ5/0.net] >>460 というと?
463 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 02:55:12.43 ID:v8FRsUWIM.net] NSCがC++を廃してRustを推しているのは、中国のUnrealEngineへの牽制か?
464 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 02:59:40.78 ID:v8FRsUWIM.net] NSA だ。
465 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 03:19:10.72 ID:P3qvmtvK0.net] >>463 unreal engineって、 中国が株主でしょ
466 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 07:43:46.78 ID:NfgrBwV2p.net] UEはアメリカのゲーム企業が作ったものなんだが・・
467 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 12:38:45.11 ID:deRGahNkM.net] スマン。中国が作ったものだとばかり思っていた。
468 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 12:41:11.49 ID:3UJQKTFB0.net] ったく、こりだからよお
469 名前:デフォルトの名無しさん [2025/06/26(木) 17:13:34.04 ID:zdpAcYpu0.net] 悪意のあるVSCode拡張機能を検出できる「VSCan」 https://gigazine.net/news/20250625-vscan/ ※上記の 本体プログラミング改造で改造コードを仕込む場所や攻撃ポイントを割り出せる ※緒繼Lと下記のプャ鴻Oラムでエラ=[コードをメモャ梶[^上に無いbゥを調べて別のャvログラムを走b轤ケるとエラーャRードから親友bナきるかが割り緒oせる などいろいろと使用可能 AIを活用した完全自律型の侵入テストツール「XBOW」がHackerOneのランキングでついに人間を抜いて1位に https://gigazine.net/news/20250625-hackerone-xbow/ 上記のプログラムと電波障害などで生じたエラーなどでで無理やりセキュリティーほーホールを見つけれる
470 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 17:16:52.94 ID:jAlq/lgY0.net] まず自分の書き込みにAI活用しろよって思った
471 名前:デフォルトの名無しさん [2025/06/26(木) 18:27:21.16 ID:o/InY5NNH.net] 藁
472 名前:デフォルトの名無しさん [2025/06/26(木) 21:29:08.64 ID:zdpAcYpu0.net] AndroidスマホでもiPhoneでもAIモデルをローカルで実行してチャットできる無料アプリ「Cactus Chat」レビュー https://gigazine.net/news/20250626-cactus-chat-android-ios-ai-local/ インターネット接続不要でAIモデルをローカル実行できる「LM Studio」にMCPサーバーへの接続機能が追加される https://gigazine.net/news/20250626-lmstudio-mcp/ 上記のAIとマクロ機能を使用すればAIのみで会話できるようになる ボイス・トォ・スカル「神や幽霊」の声はこれで行っているのか? マクロ機能の拡張でインターネットにも自動で書き込みが可能になる
473 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 22:43:52.27 ID:CNaMzIfEd.net] スレ違い。
474 名前:デフォルトの名無しさん [2025/06/28(土) 01:04:10.64 ID:ILdMmS8aH.net] gcc4.6から4倍精度入ってるみたいですねえ。 Visual C++では入っているかな。調べてみます。
475 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 01:17:47.38 ID:Ewd2t68S0.net] fortranで使うからね gccはバックエンドから対応する必要がある機能を他フロントエンドのために入れるときはほぼC言語にも拡張として入れてくる
476 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 07:36:59.43 ID:7fEtq2hP0.net] 新たなクラスを作ってまえばいいのではないでしょうか。
477 名前:デフォルトの名無しさん [2025/06/28(土) 10:51:00.28 ID:ILdMmS8aH.net] C++23からfloat128_tがサポート予定だけど まだ詳細は決まってなさそう VS2022ではまだみたい。gccも13.0以降?
478 名前:デフォルトの名無しさん [2025/06/28(土) 15:20:29.63 ID:CPXhvy7f0.net] >>477 MSのサポート掲示板だかコミュニティBBSだでVSは128_tやる気なし(一応要望は受け付けるけど)、みたいなの読んだ気がする。
479 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 15:55:10.80 ID:mCCHdrx+0.net] C++23 では「そのような型があるなら std::float128_t として提供されることもある」というオプショナルなもので、あまりあてにならない。 https://timsong-cpp.github.io/cppwp/n4950/basic.extended.fp#4 ハードウェアとかツールチェインとかの都合もあるだろうし。
480 名前:デフォルトの名無しさん [2025/06/28(土) 16:00:47.16 ID:ILdMmS8aH.net] うーむ。残念
481 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 16:13:42.13 ID:mCCHdrx+0.net] std::float128_t が提供されるときは拡張浮動小数点型 (extended floating-point type) でなけりゃならないみたいだからクラスとして定義できない。
482 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 16:59:30.25 ID:VJLy78nc0.net] float128_tがあってもFLT_MAXは64ビットという闇
483 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 18:19:57.03 ID:mCCHdrx+0.net] >>482 ??? float128_t と FLT_MAX にどのような関係があるのか意味が分からない。
484 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 18:26:24.23 ID:uZW6Klue0.net] float 4バイトだろ 32ビットだぞ
485 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 19:30:31.51 ID:mCCHdrx+0.net] float が 4 バイトなのに 8 バイト相当な値が FLT_MAX として定義されている (言語仕様に準拠していない) 環境があるという意味?
486 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 19:40:49.68 ID:Ewd2t68S0.net] 最大の浮動小数点型を表す定数のどれかと間違えたんでしょ __int128があってもintmax_tが64ビットのままみたいな話のfloat版のつもりだったと思う
487 名前:デフォルトの名無しさん [2025/06/29(日) 08:57:18.64 ID:9LYz8h1TH.net] インターネットからファイルをダウンロードするのに、現在のc界隈ではどんなライブラリを使用してるの? vc2010あたりなら、標準で使えていたけど今でも使えるのかしら?
488 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 10:59:10.19 ID:zQA4sk9y0.net] ちょっ質問なのですが class Fooの中で構造体型PrivateStructがprivateな型として定義されており、 PrivateStruct型のFooのprivateなメンバFoo::m_stもある状況に対し、 Fooの外でauto&でもってPrivateStructの型を使用できて、 あまつさえFoo::m_stの値を読んだり書いたりできたりしてカプセル化神話が崩壊したんだけど これっておま環? (コード) https://ideone.com/slBA72
489 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 12:56:56.18 ID:RnCZLFSE0.net] >>487 Windows が前提なら WinINet を使うのが素直なやり方だと思う。 規格の多少の更新などがあっても OS の側で対処してくれるからアプリケーションはリビルドする必要すらなく長期的に使えることが期待できる。 マルチプラットフォームを考えるなら Curl が楽かなぁ……。
490 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 13:04:25.17 ID:RnCZLFSE0.net] >>488 アクセス指定は識別子の可視性であって、間接的なアクセスも含めた一切の利用を禁止するわけではないよ。
491 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:14:06.51 ID:zQA4sk9y0.net] 上のコードの >auto& st = x.refStruct(); // stはFooのprivateな型だがビルドが通る。 が識別子PrivateStructの可視性を無視してくれる理由がわからんぬ…… これ >PrivateStruct& st = x.refStruct(); と書いたら型の名前PrivateStructの可視性がprivateなのでもちろんエラーになる
492 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:18:58.11 ID:zQA4sk9y0.net] 訂正orz ×: >PrivateStruct& st = x.refStruct(); ○: >Foo::PrivateStruct& st = x.refStruct();
493 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 13:37:38.54 ID:RnCZLFSE0.net] >>491 > 識別子PrivateStructの可視性を無視してくれる理由 識別子 PrivateStruct を使っていないから。 この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。 プライベートなデータメンバ m_st だってその参照を外へ持ち出してるだろ。 外で m_st という名前でアクセスできないが m_st に対応するオブジェクトへのアクセスは (アクセス経路があるなら) アクセス指定に左右されない。 同様に、プライベートに定義した型を型名ではアクセスできないが型を使えないわけではない。
494 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:59:10.64 ID:zQA4sk9y0.net] >識別子 PrivateStruct を使っていないから。 >この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。 なんで? 不完全な型の参照はエラーになるのだから コンパイラは型推論の際Foo::PrivateStructという完全な型の情報まで突き止めているはず…… なんでFoo::PrivateStructの可視性を無視してくれるのや…… 無視せずエラーにする言語仕様もあり得たはず ていうかエラーにならないのがおま環でない証拠がいまのところ無い……
495 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 14:09:12.19 ID:RnCZLFSE0.net] >>494 名前に対する使用制限である旨がはっきりと書いてある。 https://timsong-cpp.github.io/cppwp/n3337/class.access#1.1
496 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 15:12:39.04 ID:FAAHlPSo0.net] >>494 でもFoo::PrivateStructを指すpublicなtype aliasがあったらやっぱりエラーにしないで! とか言ってきたらはっ倒すぞって感じの言語仕様やなあ
497 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 15:29:55.25 ID:PWOccKtm0.net] プライベートメンバーの参照を返す関数を public でアクセスできる設計の方が驚き
498 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 15:52:20.20 ID:RnCZLFSE0.net] >>497 これ単体で見るとおかしいがプロキシパターンなどでそういう構成になることはある。
499 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 16:51:17.70 ID:RnCZLFSE0.net] すまん。プロクシパターンではないな。 見当違いなことを書いてた。 まあこの場合は言語機能の確認のサンプルだと思うから設計がどうこうはあまり気にしなくていいんじゃね。
500 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 19:25:35.84 ID:TdQ2JxNKa.net] たしかに直感的には auto で private な型を推論してしまうのはヤバくね?という感覚になってしまうが 続くレスで指摘されてるとおり private な識別子だからといって外に持ち出せないわけではないので(それを禁止するほうが弊害が大きい) そういうもんだと思ってプログラマが注意するしかないな 元々 C++ はやり方次第で言語仕様の本来の目的を外れたヤバい方法がいくらでもつかえる言語であり どんな場面でも常にプログラマは注意を払うべきなので、そういう C++ の"性格"がこの場面でも出たというところか こういうのがどうしても気になり完全な"性格"の言語が欲しいなら、他の言語にいったほうがよい
501 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 19:47:06.28 ID:ivfL45vHM.net] >>489 libcurl でいいと思う。便利だし。 curlコマンドと同じように使えるはずだし。
502 名前:デフォルトの名無しさん mailto:sage [2025/06/30(月) 19:44:03.19 ID:etdu4EFd0.net] 長い名前空間の扱いの質問なのですが、 例えばA::B::C::DみたいなクラスD内でP::Q::R::SのようなクラスSを使用していて ヘッダーファイルが namespace A::B::C { public class D { void foo(P::Q::R::S& s); }; } みたいな感じになるのですが、実際にはこのP::Q::R::Sが非常に長く正直見苦しいです かといってusingをヘッダー内で使うのは良くないですよね? こういう場合にP::Q::R::Sの部分を簡潔な表記にする方法はありますでしょうか
503 名前:デフォルトの名無しさん mailto:sage [2025/06/30(月) 20:47:28.37 ID:CUK0Fuvn0.net] namespace pqrs = P::Q::R::S でいいんじゃない?
504 名前:デフォルトの名無しさん mailto:sage [2025/07/01(火) 21:41:31.12 ID:W7Fp4vWi0.net] Sしか使わないならusing P::Q::R::S;
505 名前:はちみつ餃子 mailto:sage [2025/07/01(火) 22:22:06.69 ID:kHEih0Y20.net] >>504 using P::Q::R::S; したらもしも using namespace A::B::C; したときに P::Q::R::S も探索対象になってしまう。 使う側に余計な影響を与えないようにするには別名をつけるほうがより良い。
506 名前:デフォルトの名無しさん [2025/07/03(木) 00:24:37.09 ID:ye5zZInN0.net] エンベデッド分野は今でもC/C++が主流なの? AIに任せられない分野だから生きのこれそうで気になっておりまする
507 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 09:26:35.93 ID:q23h/8z8a.net] 良いんじゃね
508 名前:はちみつ餃子 mailto:sage [2025/07/03(木) 11:06:49.67 ID:4Hn86Ej50.net] >>506 組み込みシステムも多様なので性質や規模によるでしょ。 リアルタイム性が重要なところでは C/C++ は主流のままだと思うけど、プロジェクト全体が C/C++ だけで構成されることは少なくなるんじゃない?
509 名前:デフォルトの名無しさん [2025/07/03(木) 11:57:31.86 ID:0Ka09OV10.net] リアルタイム性はOSがやることだし 言語関係ないよ
510 名前:デフォルトの名無しさん [2025/07/03(木) 12:22:21.27 ID:dQk6sKVB0.net] Javaや.NETはGCでストップ・ザ・ワールドが発生するからリアルタイムに弱いらしい 最近は目標停止時間を1ms以下に抑えるGCもあるけど、あくまでも目標であって保証ではないからね
511 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 15:27:43.14 ID:d0nwmVKl0.net] >>509 イベントスレッドでIOされてもOSがなんとかすると思ってんの?
512 名前:デフォルトの名無しさん [2025/07/04(金) 08:50:43.54 ID:fF3rQ1JLa.net] 組み込み リアルタイムOS これほど曖昧な言い回しは他に無い
513 名前:はちみつ餃子 mailto:sage [2025/07/04(金) 10:17:03.12 ID:wZ441BSd0.net] >>509 リアルタイム性が重要なところというのはまさにそのリアルタイム OS のことで、それらを書くのに C/C++ が主流という話なんやで。 そんで既存の OS を使う場合でも次にアプリケーションを用意すれば動くというわけではなくて、組み込みシステムなら大抵の場合にデバイスドライバも書かなければいけないし、 OS が面倒みてくれる範囲は小さい。 低レイヤの整備がすでに整っている状況ならアプリケーションはもうちょっと言語の選択肢はあるかもね。
514 名前:デフォルトの名無しさん [2025/07/04(金) 10:58:10.60 ID:8a61AjkK0.net] リアルタイムOSでないOSで、リアルタイム性重視ならそうだが リアルタイムOSで作るなら言語は何でもいい
515 名前:デフォルトの名無しさん [2025/07/04(金) 10:59:28.16 ID:8a61AjkK0.net] 例えば24時間365日止まってはいけない産業用制御なんて C++でも何でもない
516 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:09:00.86 ID:7dTC+3QP0.net] シェルで済むならシェルにしなさい。(UNIX)
517 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:13:55.32 ID:lC93JhvQ0.net] 言語なんでもいいって? リアルタイムOSってそもそも言語の選択肢少ねーだろ
518 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:19:04.05 ID:lC93JhvQ0.net] >>512 いうほどあいまいか? せいぜい中身がLinux、Windowsでアプリのインストールも自由みたいなやつだけだろ
519 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 20:28:14.57 ID:wNUogzY00.net] >>511 ちょっI/Oしたらやっぱリアルタイム性に影響出るの?! んまー秒単位でwaitして帰ってこないみたいな極端なI/Oポートがあったらそうかもしれないが
520 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 20:39:26.88 ID:wNUogzY00.net] >24時間365日止まってはいけない産業用制御 冗長構成かフェイルオーバーするような枠組みとしての取り組みが第一優先な希ガス…… ソフトウェアーの冪等性により同じバグが同じタイミングで発生して冗長構成が無意味化するする危険性については 十分テストしてバグを撮ったのちに起動タイミングをずらすなどの工夫を行えばポアソン分布の同時確率か何かに従って無視できうる(と思う さすがに原子炉の制御とかだとプロセス単体も形式検証して他分野よりもっと十分検証するらしい(間接伝聞
521 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 12:14:15.08 ID:JEWbe+UQ0.net] そんなレベルはラダー図で書くやろ
522 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 12:31:12.20 ID:yj3snSzGM.net] というかリアルタイムOSの話から関係ない24/365システムの話を出すあたりよくわかってないことを雰囲気で話すタイプの人でしょ
523 名前:デフォルトの名無しさん [2025/07/05(土) 20:19:54.08 ID:iY4IPiMb0.net] >>521 C++ではないわな
524 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:14:16.80 ID:B20RUTJT0.net] 質問なのですが ケースA) std::stringstream ist("A B"); char c1, c2, c3; に対し、ist >> c1; ist >> c2; ist >> c3; とすると ist >> c2 は正常に読めて、ist >> c3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動なのですが (ちなみに読み取った文字は c1='A'、c2='B'。c3の読み取りは行われない ケースB) std::stringstream ist("A B"); std::string s1, s2, s3; に対し、ist >> s1; ist >> s2; ist >> s3; とすると ist >> s2 を実施した時点で早々に!ist.good()かつist.eof() となって挙動が相違し (ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない ケースC) しかしBの後に空白を追加してstd::stringstream ist("A B "); とすると、 ist >> s2 は正常に読めて、ist >> s3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動になる (ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない となってケースB)とケースC)で共通に使えるような最終要素まで読み取り完了判定ロジックが無く std::istream神話が崩壊したんだけどこれっておま環? 一体どうすれば……orz
525 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:16:00.70 ID:B20RUTJT0.net] 確認用サンプルコード: https://ideone.com/Guifzs
526 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:47:52.68 ID:B20RUTJT0.net] とりま上のコードからフォークしたソースコード https://ideone.com/4WPZtB の parse_as_string_with_common_logic(std::istream& is, std::string& s, bool& bErr) みたいな判定処理にしたらケースB、Cを共通に扱えるような印象 なのですが正しくはどうすればよいかわからん……
527 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 07:26:05.90 ID:oIAQiRlj0.net] 一般的な話ならchar以外の>>で一貫した挙動を期待するのに無理がある 期待した文字が来なかったらungetするかどうか?ファイル最後の改行をどうするか?シグナルが来たら?とか色々あるし ケースBで言えば"B"の後に文字が続いていればs2に含まないといけないのだから内部的にはケースAで言えばc3まで試し済みの状態 EOFフラグを見るのではなく例外で受け取ったほうが確実
528 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:18:34.40 ID:RFZXbMVga.net] ケースB、Cを共通に扱える ist.eof()でいいやん Bが一回余分にループするのは気持ち悪いけど 気にしたら負け
529 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:53:22.37 ID:14zTNASB0.net] 普通はoperator bool(または fail())を使う
530 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:56:09.61 ID:B20RUTJT0.net] >>527 だいたいわかりた is >> s ライブラリの「>>」の仕様的にsが任意のクラスで有り得るから、 例えばsが複素数クラスで2つの要素を読み取るブツなのに対し要素を1つだけ読み取れなかった場合、 みたいなのが生じ得るがis.eof()ではそこまで表現できない故にライブラリ側では char以外の一般のケースについて責任を持たないというと理解すた、 従って、test_parse_as_string_with_common_logic(const char* szInput, bool& bErr)を charの読み取りによってeof()判定するように直したわ これならiostreamの正当な使い方だけで構成されておりかつ目的を果たせているはず…… https://ideone.com/eaYGEt
531 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:00:55.07 ID:B20RUTJT0.net] >>528 >Bが一回余分にループするのは気持ち悪いけど いきなりis >> s してその直後のeof()を当てにするロジックである限り、 リンク先のケースBの挙動となり、最後の要素に引き続く空白文字がないとき 最後の要素が入力ストリームにあるのに受け取れないというもっと深刻な事態となる以下略 >>529 operator boolはis.good()と同じはず…… なおかつそれ単独では(is >> sのsがchar以外のとき)ケースBの解決になんね
532 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:06:26.76 ID:B20RUTJT0.net] ごめoperator boolは!is.fail()やった……orz
533 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:24:16.88 ID:B20RUTJT0.net] 二転三転してすまんこ考えを改めたはサーセン……orz 入力ストリームはシリアルポートみたいな途中で入力がブチ切れる危険性があるブツである こともあるから、 ケースB) (空白) (非空白文字列の期待する全体) ケースB') (空白) (非空白文字列が受信タイムアウトにより途中で切れたもの) の区別が!isになったというだけでは区別がつかない。一方、 (空白) (非空白文字列) (空白) まで受け取ったら、(非空白文字列) がタイムアウトにより途中で切れたものでないことが確実となりワカル 故に、ケースBやB'みたいな条件を扱うこと自体がライブラリの仕様想定外なのかもしれん…… 通常のテキスト読み込みでは行末に改行文字(空白文字のうち)が1文字以上あるから、この枠内で話が収まる。 Unixみたいに改行文字が '\n' 1文字だけな環境で、改行文字を読み飛ばして 呼び出し元に返さないgetline()みたいなやつで読んだ結果を istringstreamしようとするとケースBが顕在化するが、 この場合は強制的に末尾に空白文字を付けることができうる そうすればケースBは発生しない(ただし空白文字を付け忘れるとバグ
534 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:56:43.72 ID:wbQZP2jZ0.net] iostreamなんかをテキストの厳格なパースなんかに使わなければならない理由から考え直した方がいい
535 名前:デフォルトの名無しさん [2025/07/06(日) 12:20:19.64 ID:RFZXbMVga.net] 末尾で改行無しでeofが来るファイルは多い
536 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 12:43:07.86 ID:B20RUTJT0.net] >>529 ゴメ operator std::istream::bool() か std::istream::fail() だけでとりま解決したわスマンカッタorz https://ideone.com/Fd5zV6 オンメモリのストリームである std::istringstream であっても>>533 のケースB'に当たるケース (オンメモリなので非空白文字列でデータが終わっている場合)においてbadbitがセットされるっぽい この挙動がおま環でないかどうかはわからん……
537 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 12:47:26.46 ID:B20RUTJT0.net] >>534 いまさらlex的な処理をgetc()で手で書いたりstrtok()に戻ったりしたくないし……
538 名前:はちみつ餃子 mailto:sage [2025/07/06(日) 13:40:09.19 ID:VHUnBvW80.net] パーサコンビネータ的なものを先に作るのがモダンな方法だが……。 汚い部分を抽象の向こうに押し込めるだけなので汚さが無くなるわけではない。 小さい規模だと愚直な方法が楽だったりするよ。
539 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 15:17:59.65 ID:pWdjbLc50.net] C++を勉強して思ったのが C++って基底クラスをリストに登録させて 派生クラスの機能をひたすら実行させることに特化してるように思うのだけどこの考え方で合ってる? 要はリストありきな感じ
540 名前:はちみつ餃子 mailto:sage [2025/07/10(木) 15:54:02.04 ID:UMLMi9p20.net] >>539 ゲームのフレームワークでは全てのエンティティを登録してそれに対する更新を繰り返すというモデルがありふれているが、 C++ 的にそれが普通というわけではない。
541 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 16:45:53.90 ID:1drjG1ps0.net] >>539 一度デバッガで実行をトレースしてみ?
542 名前:デフォルトの名無しさん [2025/07/10(木) 18:55:50.32 ID:y21Xxg220.net] >>508 な、なるほど 何にしても、この先生きのこるには C/C++ は必要そうだね Py や JS なんかだと若い衆がどんどん来るから負けそうだし・・・
543 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 21:11:59.82 ID:pWdjbLc50.net] >>540-541 ありがとうございます リストを自作するなりstd::listを使うなりして printfみたいな文字出力をする時も、出力部分をタスククラスにぶっこんでラッピングして 出力は派生クラスでオーバーライドしたc->draw();みたいなのに任せる、というのはゲーム専用で他ではあまりされないんですね
544 名前:はちみつ餃子 mailto:sage [2025/07/11(金) 01:51:13.39 ID:/nWuXYnL0.net] C++ は設計理念のひとつとして「人に何かを強制しない」というのを挙げていて、やりたいように書けることを重視してる。 同じパターンでプログラムを書いているように感じるなら単にあなたがそのやり方しか知らないだけ。 分野ごとに大枠ではやりやすいパターンが定着していたりはするので、ひとつの分野だけ見ていると頻出パターンがあるように見えることはあるかも。
545 名前:デフォルトの名無しさん [2025/07/11(金) 11:58:09.09 ID:nUxw0t1Z0.net] BASICも同様の理念で作ればいいのに
546 名前:デフォルトの名無しさん [2025/07/11(金) 12:28:00.28 ID:36pXyECQ0.net] >>544 Z世代にはRuby on RailsやRustのほうが良いかもしれませんね
547 名前:デフォルトの名無しさん [2025/07/11(金) 14:36:44.91 ID:zLrVPFvnd.net] >>543 RustのDisplayやDebugなんてまさにそれだが
548 名前:デフォルトの名無しさん [2025/07/12(土) 13:34:42.02 ID:Y1veRsrW0.net] C++でデフォルトコンストラクタで確保したリソースだけデストラクタで破棄したくてコピーコンストラクタやコピー代入ムーブコンストラクタやムーブ代入で得たリソースはデストラクタで破棄させたくないときどうする? rustみたいな所有権システム必要になるんですか?