私はC++の初心者です(そして一般的なプログラミング)。私はスタッフの連絡先の詳細を読み書きするプログラムを書いた。このコードは正常に動作します。C++:条件文を使用したコンソール出力の出力がありません
// appropriate headers...
int main()
{
char trigger{};
int options = 0;
bool testing{};
fileIps Inptbox; // for entering new data
char ext_title[20]; char ext_intercomNum[4]; char ext_dept[20];
printf("%s", "Enter Officer's Title:\n");
gets_s(ext_title, 20);
printf("%s", "Enter Officer's Intercom Number:\n");
gets_s(ext_intercomNum, 4);
printf("%s", "Enter Officer's Department:\n");
gets_s(ext_dept, 20);
Inptbox.rcv_values(ext_title, ext_intercomNum, ext_dept);
Inptbox.create_string();
testing = Inptbox.validate();
if (testing == true)
return -1;
else if (testing == false)
Inptbox.write_string();
// more code below...
私の質問はコンソール出力に関するものです。私はまたはのモードを選択することを可能にする条件文を導入しようとしました。上記のコードはのファイルにと記載しています。ファイルよりのと読むコードは以下のとおりです。また、大丈夫でした。
私の挑戦は、私は上記のコードのための条件文...
printf("%s", "Enter 1 to WRITE DATA or 2 to READ DATA\n");
cin >> options;
if (options == 1)
{
fileIps Inptbox; // for entering new data
//... rest of code...
}
// more code below...
を紹介したら...コンソール上の出力は、最初のエントリのためのプロンプトが表示されるように、欠陥があるが、あるということですユーザは「オフィサーインターホン番号」と入力する必要があります。 3番目のプロンプトはうまくいった。
(すなわち条件を適用する)私はoptions
に値1を割り当てるためにcin
を使用する場合、さらに詳述すると、コンソールはすぐにそれは不可能私のために作る... ...
Enter Officer's Title:
Enter Officer's Intercom Number:
を印刷します最初のエントリ(つまり、 'タイトル')を入力します。
私はこれに苦労し、それを解決するためにいくつかのことを試しました。私はfgets()
を使って、gets()
でそれを試しました。私はクラスを再訪したが、何も働かなかった。私はバッファリングのようなことについて広く読んで、このサイトの質問を研究し、cstdio
とios_base
とその派生クラス(私が他のものをたくさん学んだので良かった)の様々なリソースを見ました。しかし、私のコードから「if」ステートメントを削除しない限り、他には何も試みませんでした。
私の質問は次のとおりです。「この種の動作を説明するにはどうすればいいですか?また、読み書きモードを切り替えるためにコードを実装するにはどうすればよいでしょうか?
私はと作業しています。MS Visual Studio 2015です。
「fileIps Inptbox」が(少なくとも私にとっては)混乱していることを指摘したいだけです。一般に、クラスは大文字の名前を持ち、変数は大文字ではありません。 'FileIps inptbox'です。 –
大変申し訳ございません。私がここで使用するクラスはユーザ定義であり、ここでは簡潔にするために定義したくありませんでした。私はコンベンションを教えてくれてありがとう。 –
私は100%は確信していませんが、あなたの問題は 'std :: cin'と' gets_s'を混在させることと思っています。これを見てください[例えば、質問](http://stackoverflow.com/questions/10553597/cin-and-getline-skipping-input)。 –