std::locale::global(std::locale("japanese"))でlocaleを日本語に設定できる。
| localeのサンプル |
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale::global(locale("japanese"));
wstring str1_jp = L"Hello!";
wstring str2_jp = L"こんにちは";
wcout << str1_jp << L": " << str1_jp.length() << endl;
wcout << str2_jp << L": " << str2_jp.length() << endl;
locale::global(locale("english"));
wstring str1_en = L"Hello!";
wstring str2_en = L"こんにちは";
wcout << str1_en << L": " << str1_en.length() << endl;
wcout << str2_en << L": " << str2_en.length() << endl;
return 0;
}
|
Hello!: 6 こんにちは: 5 Hello!: 6 |
std::coutなどのstreamにおけるフォーマットを変更する。iomanipをインクルードする。
| streamフォーマット変更 |
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
const double a = 3.4;
const double b = 6.5;
ios_base::fmtflags flag;
cout << pow(a, b) << endl;
flag = cout.setf(ios_base::fixed);
cout << setw(12) << setprecision(3) << pow(a, b) << endl;
cout.unsetf(‾flag);
flag = cout.setf(ios_base::scientific);
cout << setw(15) << setprecision(5) << pow(a, b) << endl;
cout.unsetf(‾flag);
return 0;
}
|
2848.48
2848.479
2.84848e+003
|
mapコンテナなどの初期値を、ヘッダファイルなどの関数の外側に設定する。
| コンテナの初期値の設定 |
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef map<int, string>::value_type num_str_t;
static num_str_t defaults[] = {
num_str_t(10, "ten"),
num_str_t(20, "twenty"),
num_str_t(30, "thirty")
};
const int defaults_size = sizeof defaults / sizeof *defaults;
static map<int, string> map_num_str(defaults, defaults + defaults_size);
int main()
{
for (map<int, string>::iterator iter = map_num_str.begin();
iter != map_num_str.end(); ++iter)
cout << iter->first << ", " << iter->second << endl;
return 0;
}
|
10, ten 20, twenty 30, thirty |
以下のプログラムが文法的に正しいか、正しくないか。CとC++ではいくつかの点において異なるので注意が必要。詳細については規格を参照のこと。
ここでは、C++の規格としてISO/IEC 14882:1998、Cの規格としてISO/IEC 9899:1990 (C89)を適用している。より新しいCの規格であるISO/IEC 9899:1999 (C99)では、関数宣言時の暗黙の型が廃止されたりと、C89と一部異なるので注意すること。
int main()
{
return 0;
}
|
C: 正しい / C++: 正しい
void main()
{
}
|
C: 正しくない(実装依存) / C++: 正しくない(実装依存)
int main()
{
}
|
C: 正しい(戻り値は不定) / C++: 正しい(戻り値は0となる)
main()
{
return 0;
}
|
C: 正しい(省略された戻り値の型はintとなる) / C++: 正しくない(戻り値の型を宣言する必要がある)
因みに、main関数以外の関数については以下の通り。
int func()
{
}
|
C: 正しい(戻り値は不定) / C++: 正しくない(returnによる戻り値が必要)