http://studyhallweb.com/
プログラム学習室
[Home][C++言語]C++言語 基本の"き"

C++言語 基本の"き"

■お奨めリンク

Computer Planet
簡単かつ簡潔にまとめられています。C/C++は初めてという方は一度ご覧になることをお奨めします。

■基本的なデータ型

int  a;    // a は -2,147,483,648 〜 2,147,483,647 の整数値
char b;    // b は -128 〜 127 の整数値、1バイト文字(半角文字)も可
char c[3]; // c は半角で2文字+'\0'(文字列を終わりを意味する値)

if 条件判断

次の例では i が 1 の時、 x = a + b が実行される。
if ( i == 1) {
    x = a + b;
}
if 文は ある条件を満たすか、満たさないかで if の後の { } の間を 実行するかしないか判断する。 if の後の一行しか実行しないのであれば { } は省略できる。
if ( i == 1)
    x = a + b;  // この行は i が 1 の時のみ実行される
y = a - b;      // この行は i の値にかかわらず実行される
「等しい」は "=="とイコールを2つ使う。
「等しくない」は "!=" を使う。

ある条件を満たすときと満たさないときで別々の処理を行うには else を使う。
if (i == 1) {
    x = a + b;
}
else {
    x = a - b;
}
これで、 i が 1 の時、 X = a + b が実行され、それ以外の時は、 X = a - b が実行される。

for 繰返し

次の例は、{ } の中を10回繰り返す。
x = 0;
for ( i = 1; i <= 10; i++) {
    x += i;
}
ここで、繰返しの回数を数えているのは i
for の ( ) の中は順に、(初期値の指定; 繰返しの条件; 繰返し毎の処理)を意味する
初期値の指定
ここでは i を 1 としている
繰返しの条件
指定条件が真であれば繰り返す
上の例では、i が 10以下の時は処理を繰り返す
繰返し毎の処理
1回処理をまわすごとの処理、通常カウントアップ
上の例では、 i を 1ずつカウントアップ
このページのトップに戻る

ファイルから文字を入力するには

◆サンプル
ファイルを開き、1文字づつファイルの終わりまで入力する
#include <fstream>

using namespace std;

int main() {
    ifstream    fin;   // ファイルストリーム
    char        cIn;   // 入力文字

    // filename.txt を入力モードで開く
    fin.open ("filename.txt", ios::in);
    if (!fin)
        return -1;     // ファイルオープンエラーの時
    while(1) {
        fin.get(cIn);  // 1文字づつ入力
        if (fin.eof()) {
            break;     // ファイルの終わりに達したらwhileを抜ける
        }              // このif文は{}が無いとダメみたい
        // ここに処理を書く
    }
    fin.close();
    return 0;
}
この例は while{} をもっと簡単に書ける
while (fin.get(cIn)) {
    // ここに処理を書く
}
◆1文字入力と1行入力
fin.get(cIn); は cIn に1文字入力
fin.getline(sIn, 256); は sIn(\nを含め256文字以内)に1行入力する
第2引数は入力バッファ(ここではsIn)の長さ

◆ファイルオープン時のモード指定
上の例で、fin.open()の第2引数で指定できる
 ios::in                 入力用に開く(他に何も指定しなければ textモード)
 ios::in | ios::binary   バイナリモードで入力
このページのトップに戻る

ファイルに文字を出力するには

◆サンプル
ファイルを開き、1行ファイルに出力する
#include <fstream>

using namespace std;

int main()
{
    ofstream  fout;        // ファイルストリーム
    char sOut[256] = "出力文字列";

    // filename.txt を出力モードで開く
    fout.open ("filename.txt", ios::out);
    if (!fout)
        return -1;         // ファイルオープンエラーの時
    fout << sOut << '\n';  // 一行出力

    fout.close();
    return 0;
}

◆1文字出力
>fout.put(cOut); は char cOut を1文字出力
これは上の例と同じように fout << cOut; でもよい

◆ファイルオープン時のモード指定
    ios::out                出力用に開く(他に何も指定しなければ textモード)
    ios::out | ios::binary  バイナリモードで出力
    ios::app                追記モードで開く(ios::outは上書き)
このページのトップに戻る

パスからドライブ名やファイル名を取り出すには

_splitpath() を使うと、フルパス名からドライブ名やファイル名などを取り出すことができる
#include <stdlib.h>		// _splitpath() のために必要
#include <iostream>

using namespace std;

int main() {
    char drive[_MAX_DRIVE];	// ドライブ名
    char dir[_MAX_DIR];		// ディレクトリ名
    char fname[_MAX_FNAME];	// ファイル名
    char ext[_MAX_EXT];		// 拡張子

    _splitpath("c:\\data\\address.xls", drive, dir, fname, ext );

    cout << "Drive=" << drive << endl;
    cout << "Dir  =" << dir   << endl;
    cout << "Fname=" << fname << endl;
    cout << "Ext  =" << ext   << endl;
    return 0;
}
これを実行すると次のように出力される
Drive=c:
Dir  =\data\
Fname=address
Ext  =.xls
このページのトップに戻る

カレントディレクトリを取得するには

Win API の GetCurrentDirectory() を使用する
#include <windows>;
#include <iostream>;

using namespace std;

int main()
{
    char dir[_MAX_PATH];  // _MAX_PATH は windows.h の中で定義されている

    GetCurrentDirectory(_MAX_PATH, dir);

    cout << dir << endl;  // dir の最後に\は付かない

    return 0;
}
ここで、_MAX_PATHは、カレントディレクトリを受け取る文字列の長さ、
dirは、その文字列のポインタ となる
文字列の長さは _MAX_DIR でも可だが、後でファイル名などを付加する場合は_MAX_PATH にしておいたほうがよい

このページのトップに戻る

ファイルが存在するか確認するには

Win API の FindFirstFile() を使用する
#include <windows>;
#include <iostream>;

using namespace std;

int main()
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;

    hFind = FindFirstFile("C:\\My Documents\\E-Mail.txt", &FindFileData);

    if (hFind == INVALID_HANDLE_VALUE)
        cout << "ファイルはありません" << endl;
    else
        cout << "ファイルがありました" << endl;

    return 0;
}
FindFirstFile()の第1引数には存在を確認するファイルのフルパス名を、
第2引数には WIN32_FIND_DATA の構造体のポインタを渡す。
戻り値は HANDLE で、INVALID_HANDLE_VALUE が帰ってきたら、第1引数で指定したファイルは存在しない

このページのトップに戻る

[Home][C++言語]C++言語 基本の"き"