- 1 名前:デフォルトの名無しさん [2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr.net]
- 何にも知らない0からの出発、超初心者のためのC++相談室
- 396 名前:デフォルトの名無しさん [2021/10/19(火) 11:51:03.31 ID:90qj1F6l.net]
- メッセージループによるイベントドリブン型アプリケーション
「ウインドウ」と「メッセージ」というウインドウズの基本概念ぐらいは理解してもいい
- 397 名前:デフォルトの名無しさん [2021/10/19(火) 19:00:27.41 ID:C9DkQou5.net]
- tcl/tk
wxWidgets DXLib Unity
- 398 名前:ハノン mailto:sage [2021/10/19(火) 20:20:27.92 ID:KyySFZDA.net]
- >>393
「C++でwin32api」ですか… そういうのは c で win32api を理解した後、各自が独力で工夫して c++ と win32api とを辻褄あわせするものだと思っていましたが、それはそうと、そういう書籍は過去にありました たしか leaf というライブラリと WOOL という lisp 処理系が掲載されていた記憶があります
- 399 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 22:23:42.02 ID:P+gkhAFH.net]
- MFC は何十年も前だけど、今もあるの?
QT は、Linux で聞くけど、Windows で使うの?
- 400 名前:デフォルトの名無しさん [2021/10/20(水) 02:20:42.50 ID:+2OzLQ7p.net]
- >>399
Qt5Core.dllで検索する色々出てくるから、win/macとマルチのアプリなんかで割と使われてみたいね。 手元だとfusion360とかresolveとかで使われてるっぽい。商用ライセンスあるからかな?
- 401 名前:デフォルトの名無しさん [2021/10/20(水) 11:06:18.19 ID:OEiI06HQ.net]
- 5以前は良かったんだがな
- 402 名前:はちみつ餃子 mailto:sage [2021/10/20(水) 13:35:36.40 ID:dLyN/sz8.net]
- >>393
MFC は API の利用をちょっと楽にする薄いラッパーという感じだな。 API のことを忘れて MFC の使い方だけ学べばよいというようなものではない。 >>398 今は C++/WinRT の時代だぞ。
- 403 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 18:01:15.01 ID:oZqSjSwG.net]
- >>398-402
WIN32やったことないんですが C++でアプリを作るときはWin32APIは避けては通れないのですか ありがとうございます…
- 404 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 19:03:46.64 ID:CkfuGqw9.net]
- 知っておいた方が良いけど
避ける方法もある
- 405 名前:デフォルトの名無しさん [2021/10/20(水) 19:36:43.86 ID:+2OzLQ7p.net]
- >>403
いや自分で書いてるQtって奴や>397なら違う世界観を満喫できると思う。 2Dゲーム系ならSDL2あたりも。他にもメンテされてるライブラリあるけどSDL2で引けば出て来ると思う。
- 406 名前:ハノン mailto:sage [2021/10/20(水) 20:15:37.71 ID:I2cv7mAQ.net]
- >>402
ええ? WinRT って .NET の世界のものかとおもっていました
- 407 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 23:17:39.77 ID:vkb7a42p.net]
- >>406
C++でも出来るよう
- 408 名前:はちみつ餃子 mailto:sage [2021/10/21(木) 00:38:03.74 ID:JAunV20A.net]
- >>406
WinRT は Windows のモダンな API セットで、特定の言語に結びついたものではない。
- 409 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 12:47:56.16 ID:dj6lZ6W1.net]
- 無名クラスのメンバ関数の実装を宣言と別にすることって可能ですか
struct { int func_hoge(int n); } myClass; (実装)?
- 410 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 08:51:29.08 ID:+fO8/EKc.net]
- std::vecotrのインスタンスを作ったとき、指定した要素数以上のメモリを確保しないようにはできますか??
- 411 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 11:43:59.55 ID:cdTTDz5e.net]
- 実装依存
普通は出来ない
- 412 名前:デフォルトの名無しさん mailto:sage [2021/11/09(火) 14:46:05.51 ID:t/ZCl1K7.net]
- 普通でなく指定したバイト数以上のメモリを確保しようとしたら例外が上がる実装例
#include <iostream> #include <vector> #include <memory> using namespace std; #define MAX_SIZE 100 template <class T, class Alloc=allocator<T>> class SizeLimitedAllocator { public: typedef T value_type; T *allocate(size_t n) { if (n > MAX_SIZE) throw bad_alloc(); return allocator_traits<Alloc>::allocate(allocator_, n); } void deallocate(T *p, size_t n) { allocator_traits<Alloc>::deallocate(allocator_, p, n); } private: Alloc allocator_; }; int main() { vector<char,SizeLimitedAllocator<char>> vec(MAX_SIZE); try { vec.resize(MAX_SIZE+1); } catch (bad_alloc& e) { cerr << e.what() << endl; } return 0; }
- 413 名前:デフォルトの名無しさん [2021/11/25(木) 04:15:10.15 ID:0166A/na.net]
- void *q = (void*)p;
void *r = reinterpert_cast<void *>(p); void *s = static_cast<void *>(p); どっちが良い?
- 414 名前:はちみつ餃子 mailto:sage [2021/11/25(木) 04:51:08.49 ID:Mn8CZmYm.net]
- >>413
static_cast で可能なものなら static_cast を使うのが行儀が良い。 Cスタイルのキャスト記法は適用範囲が広すぎて意図通りではない (危険な) 変換でもコンパイルが通るかもしれんということで 複数のキャストを用意しているので意図にあてまる限りなるべく狭い効果を持つキャストを用いるべき。
- 415 名前:デフォルトの名無しさん [2022/02/10(木) 15:34:30.67 ID:Ido/99Jv.net]
- githubからcshogiというパッケージをインストールしようとしたところ
ビルド中に src/mate.cpp:110:26: error: template parameter redefines default argument というエラーが発生しました。 実行コマンドは CPPFLAGS=-std=c++17 pip install git+https://github.com/TadaoYamaoka/cshogi としているのですが、あれこれ調べてもう打つ手がなくなりそうです。なにが悪いでしょうか。 macOS12.2付属のclangでビルドしています。(他の人は使っているので、文法などは問題ないはずだと思っています。)
- 416 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 15:42:07.23 ID:J5PrGMnU.net]
- そのエラーメッセージで検索すれば?
- 417 名前:デフォルトの名無しさん [2022/02/10(木) 15:46:35.62 ID:Ido/99Jv.net]
- >>416
とっくにやってますわ!と言うところでしたが、stackoverflowでぴったりなのがありました。 https://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument gccならよさそうですね。
- 418 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:43:42.96 ID:+mlS0n0o.net]
- test
- 419 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:05:11.63 ID:q9dCXwxq.net]
- Borland C++Builder 1が無料ダウンロードできるようですが
Borland C++ Compiler 5.5 freeとは全く別物でしょうか?
- 420 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 11:44:12.82 ID:Y2OAtTnf.net]
- 1は大昔のを記念に無料DL可にしたやつじゃないかな
最新のやつもCommunity Editionていう無料版があるから、開発に使うならそっち あとBuilderはVisual Studioのような統合開発環境でコンパイラも含まれる
- 421 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 12:32:15.10 ID:Fw15ZxLZ.net]
- ロベール読んでるけど、途中からコードとファイルを端折りすぎてどこに書いてるのか理解出来ない
- 422 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 14:31:38.38 ID:T81w77OE.net]
- >>421
その本(サイト?)はあまり読んでないからわからないけど、こういう知識・技術系は複数の本やサイトを利用したほうがいいかも 基本はそのロベールで、曖昧な部分は他のテキストでみたいに まあ逆でもいいけど
- 423 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 11:12:55.05 ID:Prmlj1K5.net]
- 分割コンパイルの仕組みちゃんと理解しないまま雰囲気でヘッダインクルードしてるんですけど
cppファイルに#pragma once書かないのってどうしてですか??
- 424 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 11:22:20.21 ID:S8aTENmp.net]
- >>423 書いても意味ないから。
- 425 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 11:45:05.99 ID:TlR/Mg8q.net]
- >>423
まあ普通一回使ったら足りるからだけど、 cppをincludeしてたら意味があるのかもな
- 426 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 19:54:53.05 ID:ozPVuLqH.net]
- cppってインクルード出来たんだ
ヘッダーだけかと思った
- 427 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 15:54:11.00 ID:LBY7PFnU.net]
- 単にコピペしてくるだけだけだからなんでもいいぞ
ルックアップテーブル計算してテキストにダンプし、ソース中に#include "table.txt" で取り込むのを見たことがある
- 428 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 19:50:08.66 ID:uaVZR/I2.net]
- IDEだと、プロジェクトに.cppを含めるとコンパイル対象になるので.inlとかにしておくのが無難
- 429 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 07:28:15.03 ID:2aZ7UOTr.net]
- 前は中身がcppっぽいのはcppにしてたけど
インクルード前提のファイルはhにするようにした #define ほにゃらら #include ファイル名.h ##undef ほにゃらら インクルードしても単体ソースとしても使えるヤツはcpp ツールが吐き出したコードやデータでそのままincludeして使えるものは拡張子はそのまま
- 430 名前:デフォルトの名無しさん [2022/06/11(土) 20:56:47.72 ID:zBk/MBZO.net]
- hpp
- 431 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 21:01:36.29 ID:N4H8T0pQ.net]
- h と hpp どっちにするかの話じゃなくて
(h or hpp) にするか (c or cpp) にするか の話
- 432 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 21:02:37.04 ID:N4H8T0pQ.net]
- 初心者はトリッキーな使い方はしない方が良いから聞かなかった事にして
- 433 名前:デフォルトの名無しさん [2022/06/11(土) 21:20:49.53 ID:kM12Kkyp.net]
- トリッカーズ。
- 434 名前:デフォルトの名無しさん [2022/06/12(日) 10:33:13.76 ID:cPTHwR7Q.net]
- 三角形の秘密はね
- 435 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 11:16:51.08 ID:v0rlTKHd.net]
- おなかがすいたら
- 436 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:40:55.19 ID:r44ApDPu.net]
- ピーナッツ
- 437 名前:デフォルトの名無しさん [2022/06/23(木) 10:13:29.99 ID:06mLNX8U.net]
- なんか、すごい達者さんが並んでますけど、
ここって、 「プログラミング初めたいけど、なんにもわからないので、初めから教えてください。」 というスレです。
- 438 名前:デフォルトの名無しさん [2022/06/23(木) 10:52:47.91 ID:M4XLJX6g.net]
- 最初からでも0からでも構わんが
自分で努力しないやつはだめ
- 439 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 11:07:51.97 ID:XRNmRbRA.net]
- 俺は努力しなくてもできちゃうからなあ
- 440 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:33:26.79 ID:06mLNX8U.net]
- 掛け算の*と、「何ですか?」の*と一緒なんですが、
区別する方法を教えてください。
- 441 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:37:03.84 ID:WbbET00J.net]
- ポインターの事?
- 442 名前:デフォルトの名無しさん [2022/06/23(木) 19:47:14.20 ID:hToQs/iZ.net]
- は?何ですか?
- 443 名前:デフォルトの名無しさん [2022/06/24(金) 10:44:51.77 ID:K2we1Lar.net]
- オレオレ
- 444 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 12:54:50.02 ID:fYiV2rYB.net]
- そうだよオレだよ
- 445 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 16:13:36.70 ID:2GuJXeRO.net]
- >>440
掛け算の*は二項演算子 「何ですか?」の*は単項演算子 *の前に項があるかどうかで判断する
- 446 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 17:44:38.20 ID:WOPsEo4E.net]
- 数字の、xxxと、
数字の、AAAの掛け算は、 xxx*AAAで、いつも迷うんです・・・
- 447 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 18:00:17.69 ID:QRg/sabr.net]
- *a+++ ++*b
で迷え
- 448 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 18:01:53.10 ID:QRg/sabr.net]
- +*a++*++*b
これも
- 449 名前:デフォルトの名無しさん [2022/08/01(月) 07:12:02.16 ID:yd/7YIgU.net]
- map よりも unordered_map の方が高速ですか?
あと追加順が保障されないのが unordered_map ですか? map は何順ですか?
- 450 名前:デフォルトの名無しさん mailto:sag [2022/08/01(月) 13:52:12 ID:jhXgj6wH.net]
- おまいは何を言っておるのだ?
- 451 名前:はちみつ餃子 mailto:sage [2022/08/01(月) 15:12:11.10 ID:YhL9Bhjt.net]
- >>449
> map よりも unordered_map の方が高速ですか? 操作によるので一概には言えない。 一般的には unordered_map のほうが有利なことが多いとは言えるけれど。 > 追加順が保障されないのが unordered_map ですか? map でも unordered_map でも追加した順序は保持されない。 C++ に限らず辞書的なデータ構造では格納順序を保持しないのが普通で、 保証があるのは Ruby の Hash くらいだと思う。 Go や Rust だと辿る順序を乱数でかき乱す実装になっているくらいだし。 > map は何順ですか? キーの順序。 特に指示しなければデフォルトではキーを std::less で比較した順序。
- 452 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 04:26:17.70 ID:ECXKpFJi.net]
- そもそもmapの順序ってなんぞや
そりゃ内部表現としての順序(あるいは非順序という名の実装依存の順序)はあるけど 腹ワタ開腹して弄くり回したら、それはもうmapとは呼べねーよ
- 453 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 01:02:16.19 ID:pMrCsY/x.net]
- vector<int*> xの特定の要素を削除したい場合
delete x[1]; してから x.erase(x.begin()+1); という手順であってますか? deleteしないとメモリリークしますよね?
- 454 名前:はちみつ餃子 mailto:sage [2022/08/16(火) 01:10:03.51 ID:+o+ePBjP.net]
- >>453
それでいいよ。 でもスマートポインタを活用するとかの工夫はしたほうがいいね。
- 455 名前:デフォルトの名無しさん [2022/08/18(木) 11:36:39.99 ID:p/limWqp.net]
- そもそも移動が大量に発生するのでそんな設計しない
- 456 名前:デフォルトの名無しさん mailto:sage [2022/10/14(金) 20:52:11.42 ID:IQ8pOIWW.net]
- 4ビットだから符号無しなら0~15だろ
コレを-8~7の符号付きにしたいということか?
- 457 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 16:23:31.27 ID:B8kXjL18.net]
- 普通に下駄履かせれば(引き算)
- 458 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 23:52:31.95 ID:lCJuR93r.net]
- いやー今日はめっちゃ勉強したわ
詳しくなった
- 459 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:18:18.28 ID:5jvZ+YKl.net]
- 誘導されて来ますた、
質問なのですがstd::stringに格納された数値文字列を数値にしたい、 しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす れば良いの? ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
- 460 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 09:22:50.76 ID:MHoxWKtY.net]
- >>459
strtod で何が不満なの。 空白かどうかで区別が必要なら空白かどうか確認するしかしょうがないし、 ダサいもくそもないだろ。
- 461 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:28:48.33 ID:5jvZ+YKl.net]
- >>460
だって&(str[0])とかナマポやし…… 文字列型がchar以外になったら(std::basic_string<TCHAR>とか)になることも見越したら 手でテンプレート書かないといけないから牛刀感があるし、 文字列が厳格に数値文字列なのか検査するとかアプリのコードであるあるなので アプリレベル(高級アセンブラ的でない書き方)の手段が用意されていて然るべきな気がして仕方が無いし、
- 462 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:30:18.23 ID:5jvZ+YKl.net]
- 無いというなら仕方が無いが、漏れはちょう初心者ですら……
- 463 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 09:37:21.42 ID:MHoxWKtY.net]
- >>461
std::stod は std::string と std::wstring に対応してるよ。
- 464 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:39:47.38 ID:5jvZ+YKl.net]
- >>463
std::stod()は数値への変換が行われなかったとき例外をスローするが 後ろに余計なものが付いていたらスルーするんじゃ…… なお試したことはありま栓、
- 465 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 09:52:59.20 ID:MHoxWKtY.net]
- >>464
??? それで何か困ることがあるという話なの? 要件が不明瞭でよくわからん。
- 466 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:55:13.77 ID:5jvZ+YKl.net]
- 実は正規表現でも使えば何とかなる……
のか…… std::regex re("^\s*([\d.]+)\s*$"); std::smatch m; if (std::regex_match(str, m, re)) { return m[1].str().strtod(); } else { エラー }
- 467 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 09:56:15.54 ID:5jvZ+YKl.net]
- >>465
仕様は最初に提示stkr、 123.456E+8 : OK 123.456E+8a : NG
- 468 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 10:00:50.19 ID:MHoxWKtY.net]
- >>467
続くものが何であるかは自分で確認してエラーにするという話をしてると思ったんやが。
- 469 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 10:05:01.33 ID:5jvZ+YKl.net]
- >>468
>続くものが何であるかは自分で確認してエラーにする ・できればライブラリでやってホスイ ・自分で書くとしてもナマポ(&(str[0]))は避けたい(>>461 ・std::string部分が他の文字列型に変わっても大丈夫なサポートがあるならそれに乗っかりたい手でテンプレートを書きたくない(>>461 できるかできないかで言えば、std::stringについてはダチャくあっても実現できてはいるので C++でちょう簡潔に書ける手段が実はあるのではないか、ありませんか、というのが質問の意図
- 470 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 10:13:13.65 ID:MHoxWKtY.net]
- >>469
続くものの種類で判断するというピンポイントな要求にマッチするものはさすがに標準にあるわけない。 それを除けば std::stod が十分に要求を満たしているように見える。
- 471 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 11:40:09.61 ID:bxWaSYac.net]
- 単位でも確認したいの?
だったらstd::ends_withとかstd::rfindとstd::substrで数字の後ろ切り出すとかでチェックしてからstd::stodでよくね チェックは自分の要件だから自分で書け標準ライブラリはお前のお母さんではない
- 472 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 11:51:26.73 ID:xmEQJDCs.net]
- 正規表現でチェックするのが1番自然な気がする
- 473 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 22:03:06.86 ID:5jvZ+YKl.net]
- >>471
> 単位でも確認したいの? > だったらstd::ends_withとかstd::rfindとstd::substrで数字の後ろ切り出すとかでチェックしてからstd::stodでよくね std::stringに格納された数値文字列を数値にしたい、 しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい(>>459 > チェックは自分の要件だから自分で書け標準ライブラリはお前のお母さんではない チェックのためには(例えばstd::stodが)どこまで読んだのかの情報が要る std::stodの裏側では文字列を数値解釈する枯れたコードが動いているわけで、 そいつにどこまで読んだのか、ただ1個の整数データを聞けさえすれば良い。 これはそれほど無茶な話ではないはずで実際strtod()ではできるから どっちかというtライブラリにちょっち不備があるのでは案件であってお母さん案件ではない。
- 474 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 22:20:35.13 ID:5jvZ+YKl.net]
- >>472
上に書いた通り(例えば)std::stodがどこまで読んだのかだけイブラリが返してくれさえしたら解決するのじゃ 正規表現は意味的には合目的的な手段やが、普通の正規表現エンジンの実装なら正規表現オブジェクトを作った際に FSMを(表形式か何かで)生成する処理が中で動くので、そんなに軽い処理ではないからやっぱ牛刀感みある… いったん作ったらマッチングは表駆動でやれるので速いことが気体できるのではないか、という香具師が居るかもしれないが、 実はstd::stod()に最大限仕事させたい(正規表現の側で数値文字列の書式についてわざわざ指定したっくない 場合は>>496の正規表現は正しくは "^\\s*(.*?)\s*$"にせねばならないからマッチング時にバックトラックが発生して遅い可能性がある これもちょっちイヤソな理由 繰り返しになるが(例えば)std::stodがどこまで読んだのかだけイブラリが返してくれさえしたらこんな考慮は不要で完全に円満に解決するのじゃ……
- 475 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 22:30:29.50 ID:bxWaSYac.net]
- >>473
そんな長文ギャンギャン書きなぐってる暇があればstodの仕様くらい調べろよ ちゃんとお前の欲しがってる物を返してくれるよ
- 476 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 00:32:44.63 ID:8dockxGx.net]
- 便乗質問していいですか
某所で似たような問題があったのだけど、付加条件として、数値がINT_MAXを超える場合は INT_MAX、INT_MINを下回る場合はINT_MINを返す、がありました stodを使う場合(stoll等でもいいですが)、これってどうやって処理すればいいですかね
- 477 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 00:38:04.95 ID:8dockxGx.net]
- 念の為「数値が」というのは元の文字列での、です。たとえば "1000000000000"みたいな
可能性としてはLONG_LONG_MAXを超えている場合もありますね
- 478 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 00:46:19.80 ID:oX+QCkCh.net]
- stoi系は範囲越えたらstd::out_of_rangeを投げるはずだが
- 479 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 01:19:48.15 ID:8dockxGx.net]
- _MAXで超えたか_MINで超えたかってわかりますかね
- 480 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 01:31:31.21 ID:oX+QCkCh.net]
- 先頭文字が'-'かどうか見れば?
- 481 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 01:54:42.53 ID:yTJt/rkc.net]
- >>475
どういうこっちゃkwsk、
- 482 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 02:04:38.53 ID:LZnxgWkc.net]
- >>481
https://ja.cppreference.com/w/cpp/string/basic_string/stof > pos がヌルポインタでなければ、ポインタ ptr (変換関数の内部的な変数) が str.c_str() 内の最初の変換されなかった文字のアドレスを受け取り、その文字のインデックスが計算されて *pos に格納されます。 これは変換によって処理された文字数になります。 > 引数 > str - 変換する文字列 > pos - 処理された文字数を格納する整数のアドレス
- 483 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 02:37:23.50 ID:yTJt/rkc.net]
- >>482
㌧クスわかりたorz
- 484 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 06:49:34.05 ID:8dockxGx.net]
- >>480
そうですね、でも文字列の先頭とは限らないですよね。やはりこの場合はある程度は 自力で文字列をパースする必要がある感じですかね ちなみに数字以外が含まれるときの挙動は "hoge 123"みたいに数字より前に非数字 がくるのは駄目だけど逆に"123 hoge"みたいのはおkなんですね
- 485 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 19:02:06.99 ID:mbwsU8Mq.net]
- 話題がないから質問してみる
struct Summer {}; Summer summer; Summer *const summerConstPtr{}; const_cast<Summer*>(summerConstPtr) = &summer; // だめ const_cast<Summer*&>(summerConstPtr) = &summer; // いける 質問1) 最後のいけるやつのconst_cast<Summer*&>の「&」はどういう意味なんでしょう? 参照のことかいな? 質問2) なんでconst_cast<Summer*>ではだめなのかな?
- 486 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 19:05:08.72 ID:mbwsU8Mq.net]
- なんか変換されたw
∑merでなくて&summerです
- 487 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/06/20(火) 20:45:04.07 ID:IIzrqfbq.net]
- >>485
参照が絡むとややこしくて単純に説明できないんだけど 代入演算子の左側は変更可能な lvalue (modifiable lvalue) であることということになっていて そのキャストだと prvalue になってしまうから代入できないという結果になる。 たとえば int x = 1; x = 2; は有りだけど 1 = 2; は駄目なのはわかるでしょ。 この代入のときの x はそこに入っている 1 という値に意味はなくて場所に意味がある。 値として取り出されてしまうと代入できないんだ。
- 488 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/06/20(火) 20:54:10.99 ID:IIzrqfbq.net]
- どういうときにどういう値カテゴリに属すことになるのか正確なところはここ見て。
https://timsong-cpp.github.io/cppwp/n3337/basic.lval C++03 時代は lvalue と rvalue だけの単純な (と言ってもそれなりに複雑だが……) 世界だったんだけど 右辺値参照の概念を整理するため (?) かだいぶんごちゃついてる。
- 489 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 23:48:13.65 ID:mbwsU8Mq.net]
- >>487
返答ありがとう。 なぜconst_cast<Summer*>(summerConstPtr)が左辺としていけないのかがわかりませぬ。 summerConstPtrはconst_cast<Summer*>によって「Summer *const」から「const」が外れて「Summer*」となって Summer *summerPtr; summerPtr = &summer; とするときの左辺summerPtrと同じようになったわけではないのでしょうか? どうもこの左辺summerPtrと同じようにするためには、const_cast<Summer*&>としなければならないようだが、この「&」にはどんな意味ががが??
- 490 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/06/21(水) 00:33:00.36 ID:3HBFHOpK.net]
- >>489
型とは別に (型と無関係ではないが) 文脈にカテゴリが存在するというのが肝心な部分。 どれがどのカテゴリに属すのかはダラダラとした箇条書きで書いてあって単純な原則では示せない。 (結果的には辻褄の合うようになってるけど……。) & は参照を表す記号という解釈は正しい。 参照は lvalue なのでキャストの結果も lvalue ってだけ。
- 491 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 01:03:31.08 ID:tILY3YM/.net]
- >>489
その理解だと↓も通ることになると思うんだけど、これが通らない理由もわからない? int i = 0; static_cast<int>(i) = 1;
- 492 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 11:05:32.10 ID:cZp0PZIW.net]
- >>490,491
「&」はやはり参照でしたか。 左辺の規則と右辺の規則があり、キャストしたポインターでは左辺の規則に従ってなくて、キャストした参照なら左辺の規則に従っていると、そうなっていると覚えるほかないのでありますな。 ありがとう。
- 493 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 00:53:29.69 ID:l197jz/x.net]
- なんで可変長配列の名前がvectorなの?
- 494 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/06/29(木) 08:14:12.68 ID:l+ZsGqGg.net]
- 伝統。
- 495 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 13:14:41.30 ID:DfwcYShQ.net]
- https://www.google.co.jp/search?q=%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB+%E6%84%8F%E5%91%B3
向きを持つ量をベクトルという 向きを持つためには複数の量が必要(単一の量はスカラーという) それを抽象化して、要素を一列に並べたものをベクトルという
- 496 名前:デフォルトの名無しさん mailto:sage [2023/07/04(火) 17:43:58.34 ID:Ld2RSFGK.net]
- c++に限定される疑問ではないかも知れませんが標準出力がどうやってコンソールに出力しているか?というところで躓いてます
gnuのlibcを見てもわからず、アセンブラを見て0x80というシステムコールをしているところまで辿り着いたけど無学なので理解できずにいます OSが用意している機能を実行しているという認識であってますか?
|

|