アプリ版:「スタンプのみでお礼する」機能のリリースについて

c++を勉強していて、cin.peekとcin.ignoreいうのが出てきました。自分で調べてみたのですがどうにも理解できませんでした。ざっくりでいいのでどのようなものなのか説明していただければ幸いです。

A 回答 (2件)

まあ、ストリームってのがまずは理解しづらいですよねぇ。


僕も最初聞いた時、「何だそれ?」とか思いました(苦笑)。
コンピュータ関係だと、前提知識がどうなのか、明言せずに話をすすめる場合が多いので困ったもんです。
まずはここを読んでみる。

ストリーム:
https://e-words.jp/w/%E3%82%B9%E3%83%88%E3%83%AA …

入力ストリームと言うのは、概念的には入力に紐付けられたリストのようなモノです。入力が標準入力からガンガン入ってきて、要するにデータの「流れ」みたいになってる、って事ですね(実際、この辺は「プログラミング言語の機能」と言うより、どうOSとやり取りしてるのか、って話です)。
通常、入力を受け取って表示する際には入ってきた「入力」をそのまま順繰りに使って行くってのが前提です。
ところが、peekと言うのは、今丁度入って来てる入力(文字なり数値)ではなく、「その次に来る」入力を先に知っちゃう機能です。

a b c d e .... と言う入力の流れ(ストリーム)

があった場合、今指してる場所は「a」なんだけど、先読みでbを知るのを「peek」と呼ぶのです。
それがこれが意図してる意味です。

std::basic_istream::peek
https://cpprefjp.github.io/reference/istream/bas …

同様に、ignoreと言うのもストリーム絡みの機能で、

a b c d e .... と言う入力の流れ(ストリーム)

があった場合、「a」を今指してるんですが、「それを使わないで捨てちゃって」、「b」を指し直す、と言う事です。
これはignoreが「無視する」って意味なんで比較的分かりやすいでしょ。
詳しくは次を御覧ください。

std::basic_istream::ignore
https://cpprefjp.github.io/reference/istream/bas …

参考まで、に。
    • good
    • 0
この回答へのお礼

とてもわかりやすい説明ありがとうございます。
僕の先生より本当にわかりやすかったです。
peekって便利な機能なんですね!
勉強になりました、本当にありがとうございます!

お礼日時:2021/02/13 02:20

ああ、ちなみに。



通常、日本語で、「ピーク」と聞くと

「(何らかの)頂点」

って連想するんで、余計「先読み機能」のpeekがピンと来ないかもしれませんが。
実は「頂点」の方のピークはpeakです。スペルが違うんです。
peekは「覗き見」と言う意味です。「次に入ってくるデータを覗き見する」んでpeekです。

peekとは:
https://ejje.weblio.jp/content/peek

英語で「覗き見」と言えばよく知られた単語はpeepなんですが、ぶっちゃけ、peek ≒ peepです。言わば同義語、ですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!
これはc++固有のものなんでしょうか?

お礼日時:2021/02/13 02:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!