C++相談室 part143

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/06/15(土) 13:51:53.57ID:DKQ0QQLH0
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part142
https://mevius.5ch.net/test/read.cgi/tech/1554124625/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
2019/07/16(火) 21:02:58.38ID:LGntUIQm0
C++標準が3年ごとにリリースされるのはなぜ? 2019/07/16 18:06 後藤大地
https://news.mynavi.jp/article/20190716-860461/

2012年以降、C++標準化委員会は3年ごとに新たなC++標準(C++14、C++17)をリリースして
いる。次のC++標準はC++20として作業が進められており、タイムスケジュールどおりの
リリースが予定されている。C++98とC++11のリリースにはそれぞれ9年ほどの時間が
かかったことを考えると、この7年間ですでに2つのC++標準が3年ごとにリリースされたのは
大きな変化だ。

ISO C++標準化委員会の議長でありMicrosoftでソフトウェアアーキテクトを務めるHerb
Sutter氏が2019年7月13日(米国時間)「Draft FAQ: Why does the C++ standard ship
every three years? - Sutter's Mill」においてその理由を説明した。(中略)

標準化委員会はC++11をリリースした後にこのモデルを見直し、タイムスケジュールベース
でリリースするモデルへ変更。Sutter氏は、機能ベースで進めるやり方とタイムスケジュー
ルベースで進めるやり方を比較しつつ、結果的には、タイムスケジュールベースのほうが
業界全体でよい効果を持つことがわかったと説明している。同氏は「機能ベースのリリース
モデルには戻りたくない」と明言しており、現在のモデルの方がうまく機能していることを
主張している。(後略)
2019/07/16(火) 21:20:33.77ID:Z97hyaL80
>>898
!!!!!!
天才か!!!!!!!

>>899
regexのが安定なんかなぁ
2019/07/16(火) 21:38:36.46ID:OG5/ucZ10
文字列の切った貼ったはセキュリティ的に怖いからね
有り物で書けるならその方がいい
2019/07/16(火) 21:39:17.81ID:I+f7TCiw0
std::getlineで\n区切りで回してから
後は知らん
2019/07/16(火) 21:45:38.70ID:LY1lZd1g0
splitあれば改行で区切ってlist化するだけなんだけどな
Qt環境ならそうする
2019/07/16(火) 21:48:21.34ID:9Yfd/4AAM
trim関数的なものを作る
2019/07/16(火) 21:54:43.77ID:W8tOKWg20
=で分割した後
左右でfind_first_not_of,find_last_not_ofで空白以外まで切り詰めかな
2019/07/16(火) 22:00:47.16ID:QDcq5Heka
ためしに書いてみたけど遅い。。。
https://wandbox.org/permlink/OjG24U6M9RMITpgM
2019/07/16(火) 22:01:38.63ID:yujEo6vK0
>>897
では私はどうすればいいですか?
2019/07/16(火) 22:04:35.23ID:H30rEKCE0
Cですが。自力分割やregexよりは早い気がする
const char* s = "abc= 123";
sscanf(s, "%[^=]=%d", key, &value);
910デフォルトの名無しさん (アウアウウー)
垢版 |
2019/07/16(火) 22:05:19.31ID:QDcq5Heka
16進数を考慮してなかった
https://wandbox.org/permlink/Mkh7FDTFEydcFdFc
2019/07/16(火) 22:05:58.06ID:Qaka0H/h0
>>897
忘れたら他人
2019/07/16(火) 22:10:14.84ID:I+f7TCiw0
昔はドヤ顔でトリッキーコード書く奴いたが最近は見ない
理由は、
できる新入社員が入ってこない
年寄りは昔ドヤ顔で書いた自分のコードを十年ぶりくらいに保守して反省するから
2019/07/16(火) 22:24:54.49ID:Qaka0H/h0
真のトリッキーコードだったら地獄はむしろ最初も最初、
離陸前に訪れているはず

もうそんな悲劇は繰り返させないRustによって、
2019/07/16(火) 22:29:08.57ID:Qaka0H/h0
ていうか今日日スマホ系だとIDEに命ぜられるがままイベントハンドラを設けて、
インテリセンスに従って高水準APIを呼べばだいたいのところできてしまうるし…

バッドノウハウとか差別化のためのトリックがむしろ脚光
915デフォルトの名無しさん (アウアウカー)
垢版 |
2019/07/17(水) 00:30:14.40ID:OvMw+j5/a
初心者です。苦戦してます。お知恵を貸してください。
仮想端末を含んだ GTK+3 アプリを C++ で作りたいです。
gtkmm だと vte が使えない(?)ので、gtk-3.0 を使って試してます。
サンプルを下のリンクに置きました。

make すると main 最後の return app->run(window); の所で、
[no member named 'run' in '_GtkApplication']とエラーになってしまいます。
この部分は gtkmm の例から持って来たもなので、変える必要があるのですが、
gtk+3 ではどう書くのが正解でしょうか?よろしくお願いします。
あるいは、gtkmm でも vte を使う簡単な方法がもしあれば、教えてください。

Makefile
http://codepad.org/wldK76KY

main_test_3.cc
http://codepad.org/NopgbNXP

sample_3.h
http://codepad.org/BiQt354F

sample_3.cc
http://codepad.org/I1B7AyJL
916デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/17(水) 01:22:30.12ID:fOq5lc1d0
>>915
個別のライブラリについては別スレでどうぞ

Gtkプログラミング on Windows!!!
https://mevius.5ch.net/test/read.cgi/tech/1147024203/
2019/07/17(水) 07:35:01.26ID:MynlIz/m0
個人開発したいとやったら、やるなと言う職業プログラマー
そんなにC++の弁護士気取りたいのか?
2019/07/17(水) 07:53:00.12ID:LHl19Ofs0
>>917
日本語でok
2019/07/17(水) 15:04:33.40ID:tb8FEgTSM
>>918
一言で言えば、C++らしいものを作りたい
なんかおすすめ教えてです
2019/07/17(水) 15:51:34.93ID:QuDmOW+q0
競技プログラムでもすればいいじゃん
2019/07/17(水) 17:12:11.03ID:Y61X+4vPd
プログラミング言語は道具だからな
鉄筋コンクリートらしい建物作りたいから教えてと聞いてるようなもの
2019/07/17(水) 18:19:32.96ID:ZZPGa0zFa
自信のソースコードを文字列定数としてコンパイル時に埋め込む方法ってありますか?
2019/07/17(水) 18:36:08.13ID:aFjepJXXd
ファイル読み込みとかしないで、自身のソースコードを表示するプログラムなら作れるが
2019/07/17(水) 19:52:17.36ID:0C/3xhixd
>>922
リソースデータなら可能
925デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/17(水) 21:40:04.62ID:PwP8j0Dr0
>>896
Haskellで丁度ピッタリの処理を自作した(組み込み関数が既にある)のでアルゴリズム自体は参考になるかも?

import Data.Char

main = (print.mywords) "hello world\t\t hahaha\n\n hohoho\n"

mywords [] = []
mywords xs = a:mywords (dropWhile isSpace b)
where (a,b) = break isSpace xs

生の配列じゃ無くてvector,list辺り使えば難しく無いはず。
文字列から、スペース削除した文字列のリストを作る。
“Hello world” -> [“Hello”,”world”]

a = スペース文字が出る直前までの文字列(上で言うところの”Hello”)
b = 残った部分(必ずスペース文字始まり。上で言うところの” world”)
dropWhile isSpace b = Haskellだと空リストにtail(リストの先頭を削除)だとエラーになるのでdropWhile使ってるが、単純に先頭を削除してループ。
2019/07/17(水) 21:52:31.47ID:3BN2/z2X0
なぜC++にsplitが無いのかに行き当たり議論は再燃し一晩で鎮火する
2019/07/17(水) 21:54:34.81ID:h56KGRci0
まあ、boost使えば解決するしな
928デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/17(水) 22:12:32.03ID:PwP8j0Dr0
嘘教えてた。。。
dropWhileは先頭削除じゃなくて、先頭も含め、普通の文字が出るまで空白文字を(続く限り)削除。
その後またa,bに分解する処理に戻る。
文字列終端に来たら、削除処理やめてループ抜ければ良い。
2019/07/17(水) 22:20:33.37ID:7sSMAEyGM
真面目に考えると
空白の定義は何か?
に始まり、様々な議論の末に
localeとかcodecvtとか糞が出来上がり
もうUTF8でええか
ってなる
2019/07/17(水) 23:21:35.69ID:2rOrG0JC0
codecvt使おうとしてdeprecated に気づいてイラッとしたが、使い込んでからでなくて良かったとも言える
2019/07/17(水) 23:42:15.40ID:MynlIz/m0
>>920
競技プログラミング一生やるわ!
C++は糞!
こんな言語二度と使わねえ
競技プログラミングの時は使うけど
2019/07/17(水) 23:51:34.05ID:tdObsQKBa
グダグタやな・・・
2019/07/18(木) 00:41:55.63ID:z8m7YHch0
c++らしさがあるとするならば使う外部ライブラリや成果物にではなく設計に出るもんだし
2019/07/18(木) 22:22:24.52ID:tHz4DA4Z0
C++ではあなたが書いたプログラムで競技するが、
Rustではあなたが書く速度が競技される…!
2019/07/18(木) 23:34:17.47ID:tHz4DA4Z0
std::unique_ptrを使い倒すなどして所有権について完璧に理解したら
Rustのコンパイルが通る確率が増すから
C++はきちんと勉強しといた方が良い
936デフォルトの名無しさん (アウアウウー)
垢版 |
2019/07/18(木) 23:57:13.50ID:6wWDWcUja
rustはジェネリクスが弱いのでまだまだC++の方が優位。
2019/07/19(金) 00:19:57.42ID:M7PKBqIe0
Rustは所有権に関する厳格なルールの強制という土台の上に、
ありえないぐらい強力な型推論と並列実行の安全性を実現しているから
トータルで見たらわからん
ていうかセルフホスティングはもちろんGUI付きのOSまで記述し切った数少ないシステム記述言語
2019/07/19(金) 07:27:38.24ID:NVGMoojf0
>>935
一ヶ月でC++理解できるならするけど
個人開発すら許されない
2019/07/19(金) 14:57:42.13ID:Tl6B//bHp
string型をunsigned short型へ
unsigned long型をunsigned short型へ

この二つの変換ってどうすれば良いのでしょうか
2019/07/19(金) 17:40:08.00ID:Ix7q1TdK0
上はstd::stoiしてからint->unsigned short変換
下は普通のキャストの何が不満なのか言ってくれないと答えようがない
2019/07/19(金) 17:41:48.47ID:sXtRjlqhr
なんで最近競技競技言ってる奴増えたのこのスレ
2019/07/19(金) 17:42:02.18ID:sXtRjlqhr
いや俺もやるけども
2019/07/19(金) 18:50:19.74ID:VjSSiyVUM
俺は遊びにc++なんか使わないな
仕事で嫌々触るだけ(ヽ´ω`)
944デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/19(金) 20:41:48.13ID:mIvdqWR30
オッパイソンていう名前もいいよな。
2019/07/19(金) 23:17:35.58ID:Bc1kXVzL0
昔はトリッキーな事をしないと
まともな動作速度にならないことが有ったからなんじゃないか
今は小手先的な方法は余り必要ないから
明らかに遅くなる様な方法を避けるだけで済む
2019/07/20(土) 01:43:36.62ID:FW5VH8uR0
3E AF とか
自己書き換えみたいなやつ、
2019/07/20(土) 01:46:03.08ID:FW5VH8uR0
LDIRのsrcとdstを1バイトずらしてV-RAMを高速0クリア、
しかしさらに速いPUSH BCループとか、
2019/07/20(土) 01:54:09.02ID:FW5VH8uR0
>>938
プログラミング言語Cなら一日かけて通読したら次の日からばりばりCが書けるようになるから
3日目からはプログラミング言語C++を2週間かけて通読したら良い
2019/07/20(土) 10:57:00.09ID:Yrx50SvY0
>>948
うるせえカス!
個人開発も出来ない言語を誰が触るか
>>941
うるせえカス!
俺は五年前からやってるわ
2019/07/20(土) 10:59:12.02ID:qxTzR7590
個人開発も出来ない言語ってどういう意味?
2019/07/20(土) 11:01:41.75ID:LSCvoBZA0
「俺ごときではC++を使ったら」個人開発も出来ないって意味じゃない?
2019/07/20(土) 11:12:37.70ID:FGTvlN9C0
コンパイラが見つけられないとかだろ
2019/07/20(土) 12:17:34.19ID:QHhW8HGw0
>>950
個人開発してるけど次何作ったらいい?みたいなことを質問をして変な回答をもらってた奴がいた気がする。バカにされて拗らしただけだろう。
開発したければこんなところで聞いてないで好きに作りゃいいのに。
2019/07/20(土) 13:06:25.21ID:haD4oX2dM
>>950
イライラすんだよ
C++って意味だよ俺は一生C++許さねえ
2019/07/20(土) 13:13:28.26ID:I7OxfMMiM
なんか別言語のバックエンドとして個人開発で現実的に使えるじゃんねC++
2019/07/20(土) 20:34:13.05ID:gmQsKw1Z0
>>953
こないだのコンテナ否定野郎といい
匿名掲示板なんだからシレっと消えたらいいのに
しつこく今日のバカは自分だと名乗りを上げるやつ多いな。
ここやばくない?
2019/07/20(土) 21:34:27.84ID:HDilRWOR0
今更だな
2019/07/20(土) 22:48:15.23ID:wwp1044bM
C++はキチガイを惹き付ける謎の魅力?があるからな
わからないからとっとと他の言語やってろと
2019/07/20(土) 22:50:38.95ID:Yrx50SvY0
>>956
うるせえんだよ
馬鹿なのはお前なんじゃねえの?
しつこく自分をバカと名乗る?鏡見てから物言え
>>958
糞が
C++完全に理解した()勢ですか?
2019/07/20(土) 22:57:45.67ID:wwp1044bM
>>958
うるせぇんだよ無能
お前みたいなのがいるせいでC++が誤解されんだよJavaでもやってろ糞が
2019/07/20(土) 23:10:31.33ID:TZzwsQSsa
java嫌い
2019/07/20(土) 23:12:08.92ID:Yrx50SvY0
>>960
しねよ!
お前みたいな奴が居てこそ、C++の偏見が出来上がったんだぞ 
ジャバなんてやりたくありませんね!一生!
2019/07/20(土) 23:16:42.66ID:/hJYDa9Z0
Javaよりpowershellの方が好きだわ
964デフォルトの名無しさん (スップ)
垢版 |
2019/07/20(土) 23:29:19.66ID:mPgH+OwDd
俺もjava好きになれんは便利な奴とは思うが何か気が合わないpythongはくそだけど未だそっちの方がいいと思うくらい(´・ω・`)
2019/07/20(土) 23:53:49.57ID:yiU6YB/J0
今のJavaはどこを目指してるのかさっぱりわからない
2019/07/21(日) 00:48:50.75ID:iF1O4o5j0
この前びっくりしたJavaの記法
 class Foo {
  void someMethod1() { Log.e("Hello"); }
  String someMethod2() { return ("World!"); }
 };

 Foo foo = new Foo() {
  void someMethod1() { Log.e("This is"); }
  String someMethod2() { return "a pen."; }
 };

これはC#でももっと穏当な書き方を要求されるぞ
Goとか意識しすぎなんじゃ…
2019/07/21(日) 00:59:05.24ID:iF1O4o5j0
>>966のはまだclassという括りが生きているが、
GoやRustはclassという括りを解体に向かっていって、
いかにも戦訓の積み重ねを経た近代言語という感じがする
2019/07/21(日) 01:10:26.92ID:b5BpKmtG0
Javaよく知らんけどnewしたときにメソッド書き換えてるのか?
2019/07/21(日) 01:15:33.89ID:g8U8cyIO0
>>966
無名クラスとはまた違うの?
2019/07/21(日) 01:25:26.85ID:iF1O4o5j0
>>968
じつは継承かつ親クラスのメンバ変数の参照キャプチャ。
もっとも、>>966のはちょっと手が滑っっており後者が表現されていなかったので、
Fooがclass Barの中で定義されたinnerクラスであり、親クラスBarの
メンバ変数Bar::m_Xを、FooやFooのサブクラスのsomeMethod1()やsomeMethod2()の中で
使っていると思ってだちゃい(汗;

C#だと親クラスのメンバの参照キャプチャということはできず、
当然親クラスポインタを(コンストラクタとかで)渡して使うinnnerクラスとして
Fooとは別の名前で明確にクラス定義せねばならない。そう、このように↓↓↓
ttps://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/nested-types
2019/07/21(日) 06:42:56.05ID:/atv33Bt0
>>963
PowerShellも便利なんだけど配列周りとか癖があるからちょっとハマりやすい
switch文に配列渡したら自動的に要素毎のループになるとかいるか?
972デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/21(日) 09:49:29.73ID:p/MmW4OD0
JavaはOOを前面に打ち出したのが失敗だったんじゃないだろか。
2019/07/21(日) 09:50:36.01ID:MuQkzP8ma
>>971
むしろ c++に欲しいわw

結構powershellのオプジェクト的に処理できる配列ループ関係は理想なんだよな
2019/07/21(日) 11:53:27.31ID:uQgnyJHu0
最近触ってないけどJavaの例外指定って今どうなってるの
C++は扱いきれずにぶん投げてnoexceptに移行したけど
2019/07/21(日) 12:11:15.35ID:5G+N+TdNM
Javaのチェック例外はラムダ式と相性が悪すぎて崩壊したよ
もうほとんど使われてない
2019/07/21(日) 12:28:36.06ID:/NqdtLiW0
>>960 >>962
まさかとは思うがC++のオブジェクト指向は汚い、とかJavaの方が理想的、とか
そういう偏見の話じゃないよな?
2019/07/21(日) 12:32:30.53ID:lSbr1E+JM
中身のないやり取りなので気にする必要は一ミリもないぞ
2019/07/21(日) 12:35:00.37ID:nevBE1rB0
Javaでチェック例外を使わないという選択肢などないと思うが。
あるとすればJavaのラムダを使わないかJava自体を使わないか。
2019/07/21(日) 13:10:45.64ID:iF1O4o5j0
>>978
>Javaでチェック例外を使わないという選択肢
Javaは1日触っただけなのでようわからんがthrows Exceptionで事実上可能なのでは…
2019/07/21(日) 17:32:26.73ID:IcUxNQlv0
「なぜ登るか?」
「そこに山があるからだ。」
「なるほど、じゃあおもくそ山高くしたろ」
なんかこんな感じだよなc++って。
2019/07/21(日) 17:41:13.82ID:5KK3hTpc0
設計の問題。
在る機能全部使おうとすると破綻する。
2019/07/21(日) 18:09:44.09ID:CyuPNeASd
無意味に難解なのはSFINAE回りくらいじゃね
それもコンセプトで解消される
後はあると便利なものがキチンとあるだけだろ
2019/07/21(日) 18:13:39.49ID:lSbr1E+JM
せっかくchrono作ったのにカレンダ無いとか… 追加されるけど
アプリレイヤーとしては欲しいものいっぱいあるぞ
2019/07/21(日) 18:32:56.02ID:/NqdtLiW0
>>982
それは語弊ありまくりだろ
SFINAEはあくまで俗称で、そういうテンプレート候補の解決は
あるテンプレートが要件を満たすかどうかを調べるために作られたものじゃない
あくまでトリックだぞ
2019/07/21(日) 18:38:11.33ID:g8U8cyIO0
>>984
まあSFINAEは言語仕様上で想定していた使われ方ではないのは知っているけど

当たり前の様に使われているから、黒魔術呼ばわりされる最大の原因であるのも確かだろ
2019/07/21(日) 18:52:48.31ID:/atv33Bt0
>>983
> アプリレイヤーとしては欲しいものいっぱいあるぞ
それを言語仕様に求めるなよ…
2019/07/21(日) 18:56:39.20ID:g8U8cyIO0
>>986
いや、無いとc由来の危険なlocaltime使ったり、独自実装してxx年問題的なバグ仕込むからあった方がいい
chrono自体の過剰な機能充実っぷりと比較すると特にね
2019/07/21(日) 18:59:22.81ID:/atv33Bt0
>>987
> いや、無いとc由来の危険なlocaltime使ったり、独自実装してxx年問題的なバグ仕込むからあった方がいい
お前みたいな低能に合わせる必要はないだろw
2019/07/21(日) 19:06:29.57ID:g8U8cyIO0
実際必要だと判断されたから、20で追加されるんだが
cの標準でも用意されていた機能なんだぜ
しかもそれ使うと危険という
2019/07/21(日) 19:42:05.39ID:0SSdRhOe0
最初のchronoは時間表現というより時間計測が主だったんだろうなあ
カレンダーが欲しくなるのは当然の流れだが
2019/07/21(日) 20:21:15.19ID:8zHzQ0Ul0
>>986
言語仕様ではなかろう
2019/07/21(日) 20:52:41.65ID:tT+txzfE0
>>976
いや、僕はC++が大好きなのに、職種C++プログラマーに馬鹿にされて頭に来た
Javaなんてどうでもいいカス
2019/07/21(日) 21:10:55.64ID:/NqdtLiW0
>>988みたいな驕り高ぶった初心者が増えたのは問題だと思うわ
>>992
そうかすまん、いつまでも過去にこだわってJavaの悪口言うのもどうかと思って
ちなみに「フリーソフトでも作ったらどうよ」と言おうと思ったがそういうのは自分で考えて自分で決めるべきだと思ってやめた(でないと絶対続かないと思ったので)
ちな職業プログラマです
2019/07/21(日) 21:15:07.27ID:/atv33Bt0
>>991
うん、俺も違うと思うよ
要するに>>982までは言語の話ししてたのにいきなりカレンダーとか言い出す>>983が出てきてレベルがだだ下がったってことなw
2019/07/21(日) 21:24:30.67ID:lSbr1E+JM
おっレベル高い話か?
ADLの悪口とか言えばいいのか?
2019/07/21(日) 21:25:36.53ID:g8U8cyIO0
標準ライブラリって言語仕様の一部じゃね?
2019/07/21(日) 21:41:15.45ID:SB58lq3ha
そろそろ次スレ。わっちょい
2019/07/21(日) 22:13:05.40ID:8zHzQ0Ul0
>>996
さあどうだろうね
俺は違うと思っているが異論は認める
2019/07/21(日) 22:34:04.04ID:/atv33Bt0
>>996
文脈にもよると思うけど>>982辺りの話は標準ライブラリとかの話じゃないでしょ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況