C++相談室 part157

■ このスレッドは過去ログ倉庫に格納されています
2021/08/09(月) 10:57:31.60ID:JaaB5Egp
前スレ
C++相談室 part156
https://mevius.5ch.net/test/read.cgi/tech/1621389313/
2021/10/15(金) 19:29:27.64ID:0K4QrynR
>>608
内部コードは utf-32 でやっているので、utf-32 縛りのほうがうれしいです‥
612デフォルトの名無しさん
垢版 |
2021/10/15(金) 19:56:39.74ID:JZ8LRo6T
>>611
はぁ?
std:::basic_regex<char8_t>、std::basic_:regex<char16_t>, std:::basic_regex<char32_t> のどれでも好きなの使えばいいじゃん
613デフォルトの名無しさん
垢版 |
2021/10/15(金) 20:01:47.12ID:JZ8LRo6T
ところで、char16_t、char32_tってエンディアンはシステム依存しばり?
614デフォルトの名無しさん
垢版 |
2021/10/15(金) 20:03:20.51ID:eqKsqNtm
ちなみに、いま使えるみたいですよ。
むかしは使えることになってるのに実際は使えなかったんだけど。
自作イテレーターにも対応してるようです。
アップルは知らんけど。
Ubuntu+gcc、Windows10+clでは自作イテレータでstd::regex<>が使えました。
これは、HTML、XML、JSONのデータ構造からコンテンツ内のみを検索のような事に使えます。
標準から外れるような議論もあるそうですが、便利なので外れないように抗議していきましょう。
615デフォルトの名無しさん
垢版 |
2021/10/15(金) 20:12:21.03ID:eqKsqNtm
C++20でchar8_tが入ると便利になりますよね。
2021/10/15(金) 20:12:58.12ID:Q47teFml
>>613
規定しない
なのでそういうのはそこでは気にしない
617デフォルトの名無しさん
垢版 |
2021/10/15(金) 20:35:46.40ID:eqKsqNtm
STLはセントルイスの略。
では、GCCは何処でしょう?
2021/10/15(金) 20:50:28.66ID:R98eOYn2
つまんね
619デフォルトの名無しさん
垢版 |
2021/10/15(金) 21:40:43.65ID:HBylJ5Wv
平面3リンクマニュピュレータの逆運動学のプログラミングが分かりません。
キーボードで手先の位置を入力すると、関節角が表示されるようにしたいです。
scanfを使うのと、アームの長さなどは適当に決めていいという条件です。

わかる方いたら、送って欲しいです。
2021/10/15(金) 22:21:16.57ID:fUsvamq4
>>619
どこの大学のなんていう授業か教えてくれたら送ってあげる
621デフォルトの名無しさん
垢版 |
2021/10/15(金) 22:41:19.44ID:HBylJ5Wv
大した大学ではないです。ロボット工学です。
2021/10/16(土) 10:16:02.78ID:pBeCkfuy
>>619
冗長マニピュレータで一意に求まらん。制約条件設けてるはずだが。
623デフォルトの名無しさん
垢版 |
2021/10/16(土) 11:55:15.40ID:NekA8urB
>>622
リンクの長さは良さそうな値を定義してください。関節の座標はこちらで決めずにあくまでも手先の位置・姿勢であるxed、yed、φedから計算で出します。解が複数出てくるので、全ての候補を求めてください。
例えば、リンクの長さは根元から順に0.3m、0.3m、0.05mなどで良いです。
プログラムとしては手先の目標値を入力して、θ1、θ2、θ3が出力されればOKです。
624デフォルトの名無しさん
垢版 |
2021/10/16(土) 12:05:17.39ID:NekA8urB
>>622
目標値は、x=0 y=0.3m φ=90degがいいと思います。先ほどのリンクの長さの設定値で楽な姿勢でロボットの手が届く範囲ですので。
2021/10/16(土) 12:08:52.99ID:pBeCkfuy
>>623
手の姿勢まで指定してて >>619 と違う問題になってんじゃん。どんなテキストにも解法載ってる問題丸投げしてんだな。
626デフォルトの名無しさん
垢版 |
2021/10/16(土) 12:14:57.04ID:NekA8urB
>>625
テキストに載ってないからここで質問してるんですよ。手の姿勢は例えばの話ですよ。どっちみちscanfで入力するんですから。
2021/10/16(土) 12:22:50.77ID:pBeCkfuy
>>626
問題が違うっつうの。
ロボット工学のテキストには必ず載ってる。よく読めアホ。
628デフォルトの名無しさん
垢版 |
2021/10/16(土) 12:35:46.33ID:NekA8urB
>>627
日本語分かる?プログラムは載ってないから。教科書に載ってるから見ろって丸投げしてんのどっちだよ。
2021/10/16(土) 13:20:33.97ID:N8k1BZc2
>>628
お前だよどう考えても
2021/10/16(土) 13:59:18.07ID:Ilt9CI+j
答える価値がないと思うなら放置しろよ
くだらねえ煽りやってんな迷惑だ
2021/10/16(土) 21:12:30.56ID:pBeCkfuy
>>628
プログラムが載ってるわけねえだろ、アホ。
載ってんのは**解法**(>>625)
2021/10/16(土) 21:15:24.70ID:1x8IpOH2
> どっちみちscanfで入力するんですから。
このレガシーさには誰も何も思わんの?笑
2021/10/16(土) 21:21:35.71ID:gJanIysk
ssfanf_s()を使った方が(%sとかについて)ちょっと安全
2021/10/16(土) 21:31:10.24ID:ex7yhveJ
安全性の話じゃねえだろ
2021/10/16(土) 21:53:50.46ID:EatL4YvD
わざわざC++なんか使っときながら勉強不足でモロアンチパターン踏んでるバカ
よくいるよね
2021/10/16(土) 22:09:18.72ID:n5lzAHDj
どういうの?
2021/10/16(土) 23:14:18.41ID:gJanIysk
やっぱ普通fgets()して1行全体を読み込んでからstrtok_s()使いマスヨネー
2021/10/16(土) 23:16:29.16ID:gJanIysk
文字列の数値化はstrtol()、strtoul()、strtof()、strtod()をオーバーロードしたwrapper関数を呼ぶテンプレートにすれば
cinと同等の型安全性と同等以上の使い勝手が実現にできるし、
2021/10/16(土) 23:41:33.15ID:VgkITY1O
C++な人ってゴリゴリ自分でBNF的なparser combinator書くイメージだな
わざわざcstring使う人はいない気がする
2021/10/16(土) 23:45:41.19ID:gJanIysk
いろんな人の手を経たプロジェクトだと CString(Windows) と std::string
(ていうか正確にはstd::basic_string<TCHAR>)が混在しがちなのがほんのちょっと悩みどころ
2021/10/16(土) 23:46:44.02ID:VgkITY1O
えーっと・・・cstringはC言語のstring.hのことだよ
2021/10/16(土) 23:53:12.21ID:gJanIysk
しらそん
いちいち
#ifdef __clusplus
# include <cstring>
# include <cmath>
#else
# include <string.h>
# include <math.h>
#endif
みたいな書き方するん会、
643デフォルトの名無しさん
垢版 |
2021/10/16(土) 23:54:09.02ID:6ga3nra2
json文字列として入力データを受け取って既存のjsonライブラリでパースするのが無難じゃないですかね
2021/10/17(日) 09:22:32.00ID:4Zt4uwKf
C++でfgets使うアホの世界チャンピオンがいるな
2021/10/17(日) 09:40:16.91ID:Rn6uB4uI
壊れても居ないものを直そうとするヴァカに言われたくはないし、
行の長さが定まっていないみたいなアフォな外部データ設計でない限り
fgets()で軽くて十分
2021/10/17(日) 09:48:08.24ID:4Zt4uwKf
直すって何を?
ああ、おまえさんの頭か
2021/10/17(日) 11:05:04.47ID:cds0CTiX
今ならメモリ不足とか気にする必要はほぼないから、
fgets()よりも、テキストファイル全体を一気に読み込んで1行分をstring_viewで返していく、みたいな流れの処理の方が効率は良いはずだよね
2021/10/17(日) 11:06:37.70ID:XrR+wpGu
MSVCのfgetc()とfgets()は実行速度が遅い
2021/10/17(日) 11:19:23.83ID:Rn6uB4uI
>>646
ちゃうちゃう、目新しいという以外にメリットも無いのに飛びつく誰かさんの方

>>647
行の長さが定まっていない仕様というのは大変恐ろしいことでありまして、
40TBの入力も許容するという意思表明なのであります
2021/10/17(日) 11:23:35.72ID:XyIQiUpb
どれもこれもザックリすぎて話にならない
2021/10/17(日) 11:24:11.36ID:Rn6uB4uI
こと外部データに関しては、読み込み終えないとサイズがわからない、みたいな仕様は悪手
で、異常な入力に対してエラー出力するプログラムは正しいが
クラッシュするのはバグ
という観点からすると、動的メモリ確保による不定長読み込みができると言っても活かしようが無く、
結局fgets()でいいやん?となる
2021/10/17(日) 11:27:15.30ID:XyIQiUpb
fgets使うくらいならOS固有の関数を呼ぶべきだと思う
readとかReadFileのことね
2021/10/17(日) 11:30:16.75ID:Rn6uB4uI
>>652
バッファリングを自力で実装するんか……
デバイスドライバ側である程度何とかしてくれるケースもあるかもしれんが
2021/10/17(日) 11:30:46.37ID:0m7FLjXf
>>652
ええ…
655デフォルトの名無しさん
垢版 |
2021/10/17(日) 11:47:07.94ID:XrR+wpGu
真理情報:fgets()はUTF-16やUTF-32のテキストファイルを正しく読み込めない
2021/10/17(日) 12:13:01.70ID:0m7FLjXf
ワイド文字用の関数は使っちゃだめということ?
まあ使い方よくわからんけど
2021/10/17(日) 12:16:45.02ID:XrR+wpGu
HTMLなりXMLなりJSONなりそれぞれパーサーがすでにあるのだからその恩恵を享受するのがナウなヤングの取るべき道でしょ
2021/10/17(日) 12:21:07.90ID:4Zt4uwKf
>>652
俺ならCreateFileMappingを使う

fgetsなんて頭の更新が止まった昭和時代の化石のうちでも地頭までひどいやつの使うものだな
2021/10/17(日) 12:21:44.62ID:cds0CTiX
>>656
ワイド文字は環境によってUTF16だったりUTF32だったりで仕様が定まらないので使いにくい
2021/10/17(日) 12:22:29.87ID:XyIQiUpb
>>658のような勝手にmmap使っちゃうようなのがいるとバグだらけになるよ
2021/10/17(日) 12:24:50.71ID:XrR+wpGu
Java、Python、Ruby、Javscriptなどの他言語にファイル読込み処理を移植する徒労を考えないバカが集うスレはここですね
2021/10/17(日) 12:25:21.31ID:jNwhUFcS
>>ID:NekA8urB の丸投げ君、己の課題であることを伏せて、お題スレに出題!
2021/10/17(日) 12:27:57.21ID:MD8jEcOV
ここまでifstreamの話なし
2021/10/17(日) 12:28:53.83ID:PatMwtBc
組み込みに近いところいると、大抵自炊に近い状態になるわ。
たとえばiostreamコンパイル通るやん、ってリンカがフラッシュ容量超えを宣告しやがる(フラッシュが640KiBもある豪華マイコンやで)。
上の方でrandom_deviceカスタマイズするの簡単にでけんやん、とか。ハード乱数なんて別にクラスに押し込んでも意味薄だけど。
2021/10/17(日) 12:29:39.45ID:4Zt4uwKf
>>661
他言語に移植するかどうかはおまえさんが決めることじゃないよ
プログラム技術板で下品な言葉に頼るのは低脳の証明だぜ
2021/10/17(日) 12:29:57.14ID:XyIQiUpb
C++の標準ライブラリを使用しない前提でファイル読み込みを考えるならOS固有の関数を呼ぶべきって言ってるだけだよ
C++の標準ライブラリを使用しないでCの標準ライブラリ呼ぶには何か正当な理由がいると思う
667デフォルトの名無しさん
垢版 |
2021/10/17(日) 12:35:21.04ID:QqhGhKAl
標準ライブラリのストリームは遅延評価やらなんやら余計な思惑が付いてるのでとにかく重い。
2021/10/17(日) 12:36:36.60ID:Bq9qBgnd
>>666
<cstdio>はC++標準ライブラリの一部だよ
2021/10/17(日) 12:36:58.22ID:0m7FLjXf
readもfreadもposixじゃろうよ
変わらんよ
670デフォルトの名無しさん
垢版 |
2021/10/17(日) 12:37:50.89ID:QqhGhKAl
APIならサクサク快適。
1Gbps/s出る。
標準ライブラリは500Mbps/sくらいしかでない。
2021/10/17(日) 12:39:23.66ID:0m7FLjXf
>>670
なんだよapiって
2021/10/17(日) 12:41:11.30ID:XrR+wpGu
システムコールと言いたかったんだろうよ。察して差しあげろ
2021/10/17(日) 12:41:18.69ID:XyIQiUpb
>>668
C++からCの標準ライブラリを呼ぶならこちらを使えという意味

>>670
そういうのは具体的な根拠の提示が必要
674デフォルトの名無しさん
垢版 |
2021/10/17(日) 12:45:16.88ID:QqhGhKAl
>>673
俺は見たんだ。
2021/10/17(日) 13:12:31.90ID:4Zt4uwKf
>>660
mmap+おまえさん→バグ
という化学反応みたいなもんか
676デフォルトの名無しさん
垢版 |
2021/10/17(日) 13:26:14.73ID:GKP6XQtx
fgetsはバイトを扱うのか文字を扱うのか分かりにくいよね
Javaはバイトを読むInputStreamと文字を読むReaderに分かれてる
ファイルは当然文字だからInputStream、上位のReaderで文字コードや改行コードを加味する

Cはバイトも文字もchar[ ]で扱うからAPIもバイト扱い・文字扱いが混在してる
fgetsは改行コードで区切るからバイトではなく文字を扱う関数のように思えるけど、実際は文字コードなどは考慮されないのでバイト読み取り程度にしか使えないしワイドキャラクタも扱えない
中途半端だと思う
677デフォルトの名無しさん
垢版 |
2021/10/17(日) 13:26:48.31ID:GKP6XQtx
ファイルは当然文字
678デフォルトの名無しさん
垢版 |
2021/10/17(日) 13:27:18.36ID:GKP6XQtx
じゃなくて
ファイルは当然バイトね ごめん、、
2021/10/17(日) 13:44:25.91ID:mjSP52s5
>>676
時代背景も考えずに中途半端とか言われても…
2021/10/17(日) 13:48:20.62ID:cds0CTiX
まぁ、欧米の毛唐どもにもようやく必要性が理解できたchar8_tの導入が進めば文字コードはutf8に統一されていくとは思うけど、
utf8はutf8で冗長コードの問題があるからな…その辺のルールも統一しとかないとバグが量産されることになるな
2021/10/17(日) 13:54:50.76ID:XrR+wpGu
2021年になってもテキストファイル読み込みの話をしなければならないC++の哀しさ
2021/10/17(日) 13:58:16.96ID:7C23oe5i
ifstream とか
#include <iostream>
とか観るとダサいなーとしか思わない
2021/10/17(日) 14:06:15.29ID:XrR+wpGu
Windowsのcode pageのような列挙型と文字セット判定クラスがC++で標準化されてないとテキスト読み込み処理を標準化できないでしょ
文字セット判定クラスは既存の判定ライブラリも標準インターフェースを介して使えるように的な
2021/10/17(日) 21:21:43.52ID:X4C5aaqV
すまんもうPythonでよくね
2021/10/17(日) 21:41:38.58ID:iZHfLY3S
>>684
せやね
2021/10/18(月) 07:17:36.06ID:SjUVJOBm
C++ではなくCを使うというならまだそいつなりに筋が通る可能性があるが
C++でfgetsにしがみつくのはC++のライブラリについてこれなかっただけの
無能の中の無能だ
2021/10/18(月) 07:27:56.24ID:guTQadjs
C++でファイル操作にcstdio(というかFILE*)を使うべきだと宣うなら
せめてその場合の例外安全性くらい論じてくれないと話にならな
2021/10/18(月) 07:44:19.97ID:G16mKgJ/
>>658
Create !
File !
Mapping !
なんでテキストファイルを読み込むだけのためにそんんあ牛刀(しかも移植性が乏しい)を使わねばならんのじゃ……
だいたい標準ストリーム(istream/ ostreamでも良いが)との結合はどうするんじゃ……
std::streambuf派生クラスとか自力で書くんか……

やっぱ頭にうんこ詰まってる人からはうんこしか出てきませんね……
2021/10/18(月) 07:47:04.30ID:G16mKgJ/
>>686
fgets()の使用はC++についていけなくてしがみついているのではなくて、
天才の判断である
2021/10/18(月) 07:52:03.70ID:SjUVJOBm
>>688
あーおまえさん、あのAPIをベアで使ってるのか
ご苦労なこったな
C++使ってんのにクラス化って発想ねえのか
2021/10/18(月) 07:56:09.77ID:G16mKgJ/
>>687
>例外安全性くらい論じてくれないと
cstdioの仕様は突っ込んで調べてはいないがファイルの読み書きに関して
例外をスローすることがあるとしたら改悪で大層な失敗ライブラリとしか言いようが無い

ていうか例外安全というのは眉唾な概念でありまして、
40TBまでメモリを食いつぶしたら例外をスローするが
39.9999TBまでメモリを食いつぶしても何も起きないというコードは
システム全体の動作を担保できておらず設計したとは言えない
もっと定量的にプロアクティブな処置を講じるべきで、システムの正常動作を例外に依存させる設計は無い
2021/10/18(月) 07:57:48.58ID:G16mKgJ/
>>690
ますますのうんこ発言ご苦労
で、標準ストリーム(istream/ ostreamでも良いが)との結合はどうするんじゃ……
2021/10/18(月) 08:00:37.32ID:pufTxU/Z
標準じゃないとか言うから突っ込まれてるのに
2021/10/18(月) 08:13:52.41ID:G16mKgJ/
この議論の中で自作クラス推しはポエミーすぐる
やっぱうんこ製造機な人は仕方が無い
2021/10/18(月) 08:23:54.90ID:SjUVJOBm
>>892
おまえさん他言語への移植がどうたら言ってた?
2021/10/18(月) 09:00:47.23ID:SjUVJOBm
C++でクラス作るなって
Cで関数作るなに匹敵するすげえ主張だな
最長不倒main関数とかw
2021/10/18(月) 10:44:23.86ID:Qq+Ry0m8
Cだけやたら詳しくてクラスの仕組み知らないウン古参とか居るからな
2021/10/18(月) 11:01:27.83ID:I7uU9DyP
MISRA-C 縛りの組み込み屋とかな
2021/10/18(月) 11:20:29.21ID:PPwA/bGd
C++からCにソースコードを移植せざるを得ないことがあるから、Cプログラマでもクラスやテンプレートの知識は必須でしょ
2021/10/18(月) 11:27:00.40ID:CHllzYZP
cの場合ファイルでクラスを実現するわけだけど、その縛りがある方がきれいになるよね
2021/10/18(月) 11:35:56.70ID:cow76Y8p
twitterでCやC++を検索したい時、検索ボックスに
(C 言語) OR cplusplus OR cpp OR @i -@i lang:ja
と入れると割りといいことが分かった。
さらに、検索ボックスの右にある「…」のボタンを押して「検索を保存」しておくと、この検索文字列が勝手に消えない。
2021/10/18(月) 13:03:36.15ID:nWV7c8cM
::fgetsってstd::getlineに対するメリットある?
2021/10/18(月) 13:40:59.86ID:inWWc53E
getlineがそもそも遅くてダメ
fopenからのfread一択
2021/10/18(月) 15:14:30.34ID:PPwA/bGd
$ man 3 getline
...
BUGS
There are no wide character versions of getdelim() or getline().
705デフォルトの名無しさん
垢版 |
2021/10/18(月) 15:52:23.39ID:r9t2S6+p
>>703
fread速くて素敵
2021/10/18(月) 15:58:38.18ID:bmSCfWZq
fopen/fread/fseekだと2GBを超えるファイルが扱えないよね
2021/10/18(月) 16:22:14.95ID:SjUVJOBm
2G超のファイルはもう珍しくもなくなったな
2021/10/18(月) 19:03:20.24ID:PPwA/bGd
>>706
fread()は2GB制約なく扱えるのでは?
2021/10/18(月) 19:10:28.52ID:SjUVJOBm
狭い視野でイキッてるヒヨッ子
2021/10/18(月) 19:38:54.73ID:bmSCfWZq
>>708
環境によってはそういう実装もあるだろうけど、保証はされていないはず
実際MSVCのランタイムとかはダメでしょ
2021/10/18(月) 19:53:44.83ID:wnQbvQnY
2GBってOSの制限じゃなくて?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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