• ベストアンサー

C++からVC++へ

C++を勉強しているものです。 質問タイトルどうりなのですが、C++の勉強が 一応終わり、VC++に入ったのですが、VC++の 本を買ってみたところ、C++とは全く違うでは ないですか、画面表示にcoutは使えない。cinでキー 入力できない(コマンド名が違うというのではないです)。じゃあ今までやってきたことはなんだった のか、と思います。 このC++からVC++に移行できた人にどんなことを 勉強したのか、知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 今まで読んでこられた書籍は、おそらく、コンソール環境(CUIといいます。windows上では、たとえばXPだと、コマンドプロンプトで実行する形式のプログラムですね。)での勉強をしてこられたものと思います。  ところで、windows上でのプログラム(GUIと称します。)では、ユーザーから入力を受け付け、画面を表示する為の方法が、CUIの時と全く違います。VC++の書籍は、windows上でGUIのプログラムを組むための内容が記述されている物と思います。  あなたの感じられた「全く違う」部分は、すべて、このCUIとGUIのプログラムにおける入出力に当たる部分だと思います。  まず、今まで学んできたことは、「すべて」役に立ちます。というか、実は、まったく違う所はありません。じゃぁ、違うと感じた部分は何か。それが、windowsにおけるプログラムで学ばなければならないことです。これから、あなたは、windowsというOS上でのプログラムの作り方を学ぶことになります。これは、windowsのAPI(Application Interface)関数の使い方を学ぶことです・・が、これ実は、生のままで扱うと、とても難しい関数です。それで、VC++には、MFCというクラスライブラリーがついています。これは、windowsのGUIプログラムをサポートするためのライブラリー集です。VC++の書籍は大概、このクラスライブラリーの使い方の説明がメインになっていると思ってください。  クラスの再利用に関して学習されていれば、この再利用の典型例が、この類のクラスライブラリーです。  わたしが、windowsのプログラムを始めたころは(まだ、windows3.1の頃です。)生のAPIの使い方、メッセージ駆動プログラムの作法・リソースの取り扱い等、かなりのことを勉強しないと、最初のプログラムさえ書けませんでしたが、MFCクラスの表面的な使い方から入れば、そのときほど苦労することもないでしょう。  ちなみに、先の方も、最初に書いておられますが、VC++は、言語ではないです。単なる製品名です。C++のコンパイラーと、MFCというクラスライブラリー、それに、windows上での統合開発環境をセットにしたmicrosoftの製品とでも言っておきましょうか。  というわけで、そこに記述するプログラムの構文は、リソース関係を除けば、全部いままで学んできたC++の構文です。見覚えのない関数・見覚えの無いクラスは、全部windowsというOSを使うための関数・クラスですから、じっくり取り組んでみてください。  がんばってくださいね。

tomojyuu
質問者

お礼

回答ありがとうございます。 windowsにおけるプログラムで学ばなければならないことC++が違うと感じたのかもしれません。 この部分は白紙の状態から覚えなくてはならないのですね。 挫折しそうですが、がんばってみます。

その他の回答 (1)

  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.1

勘違いしてる人が多いのですがVisualC++と言う言語はありません。 VC++はMicrosoftのC++コンパイラ(+周辺ツール)の商品名です。 いろいろな本を見てもこの辺をいい加減にしてVC++と言う言語があるかのように書いてます。 本題: VC++とMFCを使ってWindowsのGUIプログラムを作成でしょうか?(違っていれば補足してください) C++の文字表示や入力はCUIプログラムで使う関数です。 GUIのためにはウインドウやオブジェクト(ボタンやテキストボックス等)の扱い方を覚える必要があります。 MFCを扱うためにはC++のクラスやオブジェクト指向の知識が必要になります。 MFCを使わなければクラスとは無縁でCのみでWindowsのGUIプログラムを作ることが可能です。 プロジェクトを作るときWin32ConsolApplicationを選択すれば普通のC/C++のプログラミングもできます。

tomojyuu
質問者

補足

早速の回答ありがとうございます。 >いろいろな本を見てもこの辺をいい加減にしてVC++と言う言語があるかのように書いてます。 山本信雄著 VISUALC++ はじめてのWindowsプログラムという本です。 >VC++とMFCを使ってWindowsのGUIプログラムを作成でしょうか? はいそうです。 >プロジェクトを作るときWin32ConsolApplicationを選択すれば普通のC/C++のプログラミングもできます。 それでやっていました。 最終的にはVC++でGUIプログラムのアプリケーション を作りたいと思っているのですが。

関連するQ&A

  • VC++でプログラムの勉強をしています。

    プログラムは最近はじめたばかりです。While文とif文を使ってクイズを作ってみたところ、一個目のsinで入力を求めているところから無限ループになってしまいました。色々調べてcin.cler()とsin.ignore()を入れたりもしてみましたが上手くいきませんでした。どこを間違えているのでしょうか? //クイズ #include <iostream> using namespace std; int main()//cin.clear();cin.ignore();???? { int a; int b; while(1) { cout<<"ネコ型のロボットが出てくるアニメといえば?"<<endl; cout<<"A)ドラえもん B)ドラエもん C)ほりえもん D)サザエさん"<<endl; cin>>a; if(a=='A') { cout<<"ファイナルアンサー?"<<endl; cout<<"Y)Yes N)NO"<<endl; cin>>b; if(b=='Y'){break;} if(b=='N'){cout<<"ゆっくり考えてね!!"<<endl;} if(b!='Y'||'N'){cout<<"正しく入力してね!"<<endl;} } if(a=='B'||'C'||'D') { cout<<"ファイナルアンサー?"<<endl; cout<<"Y)Yes N)NO"<<endl; cin>>b; if(b=='Y'){cout<<"残念!!"<<endl;} if(b=='N'){cout<<"ゆっくり考えてね!!"<<endl;} } if(a!='A'||'B'||'C'||'D'){cout<<"正しく入力してね!"<<endl;} } cout<<"正解!!"<<endl; }

  • VC++6.0からVC++.NETへの変遷について

    VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。 C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。 (かなり違うという表現は、各人の状況により意見が異なると思いますが) 私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。 今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか? すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか? つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか? 良くご存知の方見解をお願いします。

  • コンソールで整数を入力(C#)

    C#でコンソールから整数を入力したいのですが、 やり方がみつかりません。分かる方教えてください。 C++だと下のようなコードです。 int a; cout<<"整数を入力して!"; cin>>a; cout<<"入力した整数は:"<<a; こんなこと分からなくてすみません...

  • C++とVC++の違いについて

    この質問をご覧頂きありがとうございます。 みなさんに2つ、お聞きしたいことがあり、質問させていただきます。 1.C++とVC++とでは、どのくらいの違い(どういう違い、特徴)があるのでしょうか? 2.また、これからC++/VC++でプログラミングを始めようとした場合、 C++からVC++へと段階を踏んで勉強した方がよいのでしょうか? 一応、私のプログラミングの履歴としては、 言語としてVisual Basicは多少勉強はしておりました。 また、オブジェクト指向の基礎程度(多相、継承、カプセル化)は理解しています。 抽象的な質問で大変恐縮なのですが、 みなさんの経験論や、ご参考にした本、HP等がありましたら、 ご教授いただければと思います。

  • C++で二次方程式のプログラム

    大分前に二次方程式のプログラムを作るって問題が出ていました。 しかし、セットで作ったプログラムのフローチャートを書くんですがフローチャートが分かりません。 条件は 虚数解 a=0 実数解 の場合分けをして、解を出すってプログラムなんですが、多分、それ自体は合っていると思います。 しかし、そのフローチャートを書きなさいって問題があったんですが、それが未だに分からないんですが、これをフローチャートに書くとすると、どう書けばいいですか? #include <iostream> #include <cmath> using namespace std; int main() { double a,b,c,d,x0,x1; cout << "aを入力してください\n"; cin >> a; cout << "bを入力してください\n"; cin >> b; cout << "cを入力してください\n"; cin >> c; d=b*b-4*a*c; x0 = (-b + sqrt(d)) / (2 * a); x1 = (-b - sqrt(d)) / (2 * a); if(a==0) { cout << "解は1つで" << -c/b << "です\n"; } else if(d>0) { cout << "解は二つの実数解で,解は" << x0 << "," << x1 << "です\n"; } else { cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+i" << sqrt(-d) / (2 * a) << " , " << (-b) / (2 * a) << "-i" << sqrt(-d) / (2 * a) << "です\n"; } return 0; }

  • C++

    C++で書いた下記のプログラムが、文字の入力が1023個までなら実行されますが、1024個を超えると実行されません。なぜだか分かる方、教えてください。 #include <iostream> #include <string> using namespace std; int main(void) { string Str; cin >> Str; cout << "here"; }

  • VC++で

    VC++で #include <iostream> using namespace std; int main() { cout << "motona_\n"; cout << "画面出力\n"; } をビルドすると… 1>------ ビルド開始: プロジェクト: AA, 構成: Release Win32 ------ 1> AA.cpp 1>AA.cpp(18): error C2731: 'main' : 関数はオーバーロードできません。 1> AA.cpp(17) : 'main' の宣言を確認してください。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== と出てきてしまいます。 どこが間違ってるのでしょうか????C++を始めたばかりなんで全くわかりません

  • C++で解りません。

    C++で #include <iostream.h> int main(void) { int x; int y; cout << "xを入力してください:"; cin >> x; cout << "yを入力してください:"; cin >> y; cout << "x+yは" << x + y << "です。\n"; return 0; } ----------- で、 エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) エラー E2206 a.cpp 19: 不正な文字 ' ' (0×8140) とでます。どこがおかしいのか解りません。

  • 今からVC6の勉強をするのは時間の無駄ですか?

    10年くらい(?)前、かなり気合を入れてVB6を勉強したことがあるのですが、 その時にその流れでVC6の入門書も数冊購入して勉強しました。 半分くらいは理解できたと思っています。 その後、VB6を触ることも無かったのですが、最近、仕事で再びVB6に携わり、VC6をまた勉強したくなりました。 当時購入したVC6の書物は残してあるので、あとは勉強するだけなのですが、 しかし今では「.NET C++ 2008」とやらに進化していますよね。 それで質問なのですが、今からVC6の勉強をするのは時間の無駄でしょうか? WindowsAPIやらMFCの使い方などを学ぶのは決して無駄ではないと思うのですが、どうせならやっぱり「.NET C++」に切り替えて学ぶべきでしょうか? (本だけは数冊あるので出費しなくて済むし、一度は読んだ本だから理解もしやすいのではなかろうかという気持ちがあります) VC6と「.NET C++」との違いもよく理解できていないので、頓珍漢な質問になっているかもしれませんが、ご教授よろしくお願いします。 ※1:VB6からは「.NET VB/C#」に移行しているのは知っています。 ※2:C++の勉強目的は単なる知識欲で趣味の世界です。    何かのソフトを作ろうという目的はありません。(^^;

  • VC++6.0 PRINTF.Cのパスを…

    VC++6.0でデバッグするときに、 F10キー(ステップオーバー)や F11キー(ステップイン)実行していると、突然 「 PRINTF.Cのパスを入力してください。」と言うファイルウィンドウが表示されます。 また他に「SETBUF.Cのパス…」とか「CRT.Cのパス…」 などと聞いてくるときもあります。 なんだか分らないのでキャンセルボタンを押すと、こんどは混合ウィンドウが表示されて、そこにカーソルが移ってしまいます。(混合ウィンドウには、printfの内部ルーチン?みたいなものが表示されます。) しかたないので、その後はF5キーとブレークポイントを使った デバッグでしのいでるのですが、これではどうも不自由です。「PRINTF.Cのパスを入力…」は、いったいどうしたら表示されないようになるのでしょうか? 放っておいた6.0をようやく始めた初心者です。 よろしくお願いします。

専門家に質問してみよう