No.15998![]() |
文字の読み込み 投稿者---けん(2004/07/29 19:29:45) |
||
int main(void) { char c; while(cin.get(c)){ cout<<c; } return(0); } これは文字を一文字読み込んで評価すると書いてありました。 しかし、たとえば入力がasdfgだとすると、出力もasdfになります。 このasdfは4文字なんですけど、このプログラムはいったいどういう 構造になっているんですか? |
No.15999![]() |
Re:文字の読み込み 投稿者---けん(2004/07/29 19:30:46) |
||
>int main(void) すいません、間違えました >{ > char c; > while(cin.get(c)){ > cout<<c; > } > return(0); >} >これは文字を一文字読み込んで評価すると書いてありました。 >しかし、たとえば入力がasdfgだとすると、出力もasdfgになります。 >このasdfgは5文字なんですけど、このプログラムはいったいどういう >構造になっているんですか? |
No.16000![]() |
Re:文字の読み込み 投稿者---シャノン(2004/07/29 20:21:19) |
||
>>int main(void) >すいません、間違えました >>{ >> char c; // データを格納する変数 >> while(cin.get(c)){ // コンソールから一文字読む >> cout<<c; // 読んだ文字列を書き出す >> } >> return(0); >>} >>これは文字を一文字読み込んで評価すると書いてありました。 >>しかし、たとえば入力がasdfgだとすると、出力もasdfgになります。 >>このasdfgは5文字なんですけど、このプログラムはいったいどういう >>構造になっているんですか? という構造です。 |
No.16002![]() |
Re:文字の読み込み 投稿者---aki(2004/07/29 21:06:59) |
||
#include <iostream> using namespace std; int main() { char c; while (cin.get(c)) { cout << c; } return 0; } (1) cin.get(c) は cin から c に1文字だけを読み込みます。 (2) もし読み込みに成功すれば、while の条件部は真となり、ループ本体の cout << c; が実行されます。すなわちその1文字が cout に出力されま す。そして (1) に戻ります。 読み込みに失敗した場合 cin.get(c) は偽となります。したがって while ループを抜けてプログラムは終了します。 大雑把に説明するとこんな感じですが、このプログラムをきちんと理解するのは 結構大変です。このプログラムに asdfg という5文字の入力を与えると while ループの本体が5回実行されるわけです。 |