質問編集履歴

4 出力結果の詳細

impreplus

impreplus score 7

2018/03/22 21:23  投稿

fstream.hにおけるget()関数で入力を1回スキップする機能などがあるのか
### 前提・実現したいこと
独習C++という参考書でC++の学習をしています。fstreamヘッダファイルのget()関数を使用した際にエラーが出たわけではないのですが, 出力結果がおかしくなってしまいました.
### 該当のソースコード
```C++
#include<iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
      char ch;
      if (argc != 2) {
             cout << "引数の数が間違っています." << endl;
             return 1;
      }
      ofstream out(argv[1], ios::out | ios::binary|ios::skipws);
      if (!out) {
             cout << "出力ファイルが開けません." << endl;
             return 1;
      }
      cout << "$で入力を終了します." << endl;
      do {
             cout << ": ";
             cin.get(ch);
             out.put(ch);
      } while (ch != '$');
      out.close();
      return 0;
}
```
###出力結果
###コンソール画面上での出力結果
```
$で入力を終了します.
: b
: : a
: : d
: : $
続行するには何かキーを押してください . . .
```
###問題点
上記の出力結果なのですが, 自分が想定していたのは以下のようなものでした. 「:」が1つ多く出力されているのが何故なのか考えても分かりません. get()関数に入力を1回スキップする機能などが付いているのでしょうか...?
```
$で入力を終了します.
: b
: a
: d
: $
続行するには何かキーを押してください . . .
```
  • C++

    8689 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3 エラーコメントの付けたし

impreplus

impreplus score 7

2018/03/22 21:05  投稿

fstream.hにおけるget()関数で入力を1回スキップする機能などがあるのか
### 前提・実現したいこと
独習C++という参考書でC++の学習をしています。fstreamヘッダファイルのget()関数を使用した際にエラーが出たわけではないのですが, 出力結果がおかしくなってしまいました.
### 該当のソースコード
```C++
#include<iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
      char ch;
      if (argc != 2) {
             cout << "err" << endl;
             cout << "引数の数が間違っています." << endl;
             return 1;
      }
      ofstream out(argv[1], ios::out | ios::binary|ios::skipws);
      if (!out) {
             cout << "開けない" << endl;
             cout << "出力ファイルが開けません." << endl;
             return 1;
      }
      cout << "$で入力を終了します." << endl;
      do {
             cout << ": ";
             cin.get(ch);
             out.put(ch);
      } while (ch != '$');
      out.close();
      return 0;
}
```
###出力結果
```
$で入力を終了します.
: b
: : a
: : d
: : $
続行するには何かキーを押してください . . .
```
###問題点
上記の出力結果なのですが, 自分が想定していたのは以下のようなものでした. 「:」が1つ多く出力されているのが何故なのか考えても分かりません. get()関数に入力を1回スキップする機能などが付いているのでしょうか...?
```
$で入力を終了します.
: b
: a
: d
: $
続行するには何かキーを押してください . . .
```
  • C++

    8689 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

2 タイトルの改変

impreplus

impreplus score 7

2018/03/22 21:02  投稿

cin.get()関数で入力を1回スキップする機能などがあるのか
fstream.hにおけるget()関数で入力を1回スキップする機能などがあるのか
### 前提・実現したいこと
独習C++という参考書でC++の学習をしています。fstreamヘッダファイルのget()関数を使用した際にエラーが出たわけではないのですが, 出力結果がおかしくなってしまいました.
### 該当のソースコード
```C++
#include<iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
char ch;
if (argc != 2) {
cout << "err" << endl;
return 1;
}
ofstream out(argv[1], ios::out | ios::binary|ios::skipws);
if (!out) {
cout << "開けない" << endl;
return 1;
}
cout << "$で入力を終了します." << endl;
do {
cout << ": ";
cin.get(ch);
out.put(ch);
} while (ch != '$');
out.close();
return 0;
}
```
###出力結果
```
$で入力を終了します.
: b
: : a
: : d
: : $
続行するには何かキーを押してください . . .
```
###問題点
上記の出力結果なのですが, 自分が想定していたのは以下のようなものでした. 「:」が1つ多く出力されているのが何故なのか考えても分かりません. get()関数に入力を1回スキップする機能などが付いているのでしょうか...?
```
$で入力を終了します.
: b
: a
: d
: $
続行するには何かキーを押してください . . .
```
  • C++

    8689 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1 タイトルの改変

impreplus

impreplus score 7

2018/03/22 21:01  投稿

独習C++ 例9.3 get()関数について
cin.get()関数で入力を1回スキップする機能などがあるのか
### 前提・実現したいこと
独習C++という参考書でC++の学習をしています。fstreamヘッダファイルのget()関数を使用した際にエラーが出たわけではないのですが, 出力結果がおかしくなってしまいました.
### 該当のソースコード
```C++
#include<iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
      char ch;
      if (argc != 2) {
             cout << "err" << endl;
             return 1;
      }
      ofstream out(argv[1], ios::out | ios::binary|ios::skipws);
      if (!out) {
             cout << "開けない" << endl;
             return 1;
      }
      cout << "$で入力を終了します." << endl;
      do {
             cout << ": ";
             cin.get(ch);
             out.put(ch);
      } while (ch != '$');
      out.close();
      return 0;
}
```
###出力結果
```
$で入力を終了します.
: b
: : a
: : d
: : $
続行するには何かキーを押してください . . .
```
###問題点
```
$で入力を終了します.
: b
: a
: d
: $
続行するには何かキーを押してください . . .
```
```
  • C++

    8689 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る