お約束のHello world.
早速プログラムを書いてみます。

#include <cstdlib>
#include <stdio.h>
#include <unistd.h>
#include <iostream>

using namespace std;

int main(int argc, char** argv) 
{
    //これからプログラムを書くぞ!
    int i;
    std::cout << "Hello world.日本語" << std::endl;
    for (i = 0; i < 3; i++) 
    {
        printf("%d回\n", i);
        sleep(1);
    }
    return 0;
}
   
デバッグします。

2秒経過して上図のようになります。文字化けしています。
問題は2件。
1.文字化けする。
2.printf()での出力がすぐ表示されない。

次に実行します。

文字化けなし。
問題は1件。
1.printf()での出力がすぐ表示されない。

出来上がった実行ファイルをLXTerminalで実行します。
意図したように動作しました。

printf()での出力ウィンドがすぐ表示されない。
に関してはprintf()の後に、
fflush(stdout);
をいれると即表示をするようになります。

実行では文字化けしないがデバッグで文字化けする。
デバッガーgdbとこの出力ウィンドで文字コードの不一致によるものと思われます。他のOSでは
netbeans.conf
に設定を追加すれば簡単に解決した事例がありました。しかし、ダメでした。

このことを踏まえ、出力ウィンドに表示をするときは、
1.coutを使う
2.日本語を使わず英語にする
でやることにします。

Windowsのソフトではprintf()を使うことはほとんどありません。X-Windowでも同様と思われます。あまり気にしないことにします。
目次へ