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による戻り値が必要)