フリーランサーであるか、エキゾチックなC ++環境を試してみたい場合は、Semion Esilevskyの一連の記事(
パート1 、
パート2 、
パート3 、
パート4-すべてが
wikiにあり
ます )そのような最後の別れの言葉で:
「U ++の利点は、その異常性と高い「参入障壁」を上回っていますか?」 私の意見では、はい。 U ++は、特にデータベースの大量使用が予想される場合、ゼロから開発されたクロスプラットフォームプロジェクトに最適です。
カットの下には、データベースに保存されているドキュメントの編集されたディレクトリの毎日の作業の月の
フォーラムおよび
マニュアルで発見したU ++のニュアンスがあります。 私は
すぐに 「素晴らしき三位一体」との比較がないことに
気付くでしょう。最も単純なGUIで以前はWTLを使用し、残念ながら
eGUI ++ライブラリを探しましたが、残念ながら作者は見捨てましたが、誰もいませんでした。
まず第一に、Ultimate ++は最後通告です:TheIDEの独自の環境、または、たとえばVisual Studio + STL + POCO + WTLのようなWindowsでのセット。 その結果、例外を忘れる必要がありますが、残りはまともですが、私が書いた非同期クライアント/サーバーファイル転送コードの断片で示されています。
コア
- デリゲート(GUIでイベントをバインドするためのメインツール。個人的には、私が最も夢中になりました)
- シングルトン
- ロギング(実数では、%lfの代わりに%fが使用されることに注意してください)
- Iniファイル
VectorMap<string string> config = LoadIniFile(GetExeDirFile("config.ini")); String host = config.Get("HOST"); int port = ScanInt(config.Get("PORT")); for (int i = 0; i < config.GetCount(); i++) { if ("FILE" == config.GetKey(i)) { Cout() << config[i] << "\n"; } }
- マルチスレッド
私の知る限り、OpenMPはサポートされていませんが、代わりに、 デリゲートを操作するCoWorkが推奨されていますが、これはループの並列化には不便です。
- テキストJSON(バイナリデータはBase64Encode / Base64Decode関数のペアでサポートされます)
FileIn fp(fname); Json json; json("fname", fname)("fsize", (int)fp.GetSize())("fdata", Base64Encode(LoadFile(fname))); ValueArray jsonAr = ParseJSON(json.ToString()); fname = jsonAr[0]; int fsize = jsonAr[1]; String fdata = Base64Decode(jsonAr[2]);
- ソケット
TcpSocket server; if (!server.Listen(port)) { LOG(Format("Can't open server port %d for listening\n", port)); return; } for(;;) { LOG("Waiting..."); TcpSocket socket; if (socket.Accept(server)) { String msg = ""; for (int c = socket.Get(); c > 0 && c != '\n'; c = socket.Get()) { msg.Cat(c); } } }
- RegExp(PCRE)
RegExp reg("(\\\\)"); String path = "D:\\test.txt"; if (reg.Match(path)) { int last; int first; reg.GetMatchPos(0, first, last); String drive = path.Mid(0, last); String fname = path.Mid(last); }
- 組み込みのメモリリークチェック(mallocは追跡されません)
GUI_APP_MAIN { double *d = new double(0); }

SQL
ここと
ここを見
て ください 。 PHP / Yiiファンは感謝するはずです。
QTF(ReportView)
QTFは、高度なテキストフォーマット用のネイティブU ++形式です。 RichEditおよびレポートの生成で使用されます。 TheIDEには実験用の特別なデザイナーがいます:

レポートを印刷するための特別なダイアログも提供されています(pdfでの保存はReportWindowの腸内にあります):
Color rgb_color = Color(109, 171, 211); String qtf_color = Format("@(%d.%d.%d)", rgb_color.GetR(), rgb_color.GetG(), rgb_color.GetB()); String qtf; qtf.Cat(Format("[R9/%s Habrahabr &]", qtf_color)); qtf.Cat(Format("[_%s ] [ ] [_%sq\\&a] [_%s ] [_%s ] [_%s ]", qtf_color, qtf_color, qtf_color, qtf_color, qtf_color)); Report rep; rep << qtf; ReportWindow().Perform(rep);

テキストのスタイルはタグ[and]で囲まれ、最初にブラケットの後ろに[QTF識別子があり、次にスペーステキストのみです。 一般に、原則はHTMLのようなもので、違いは名前だけです。
バザール
Bazarは特定のニーズに対応する一連のユーザーライブラリであり、中でも
OfficeオートメーションでのWord / Excelのクロスプラットフォーム作業は非常に役立ちました。
#include <OfficeAutomation/OfficeAutomation.h> GUI_APP_MAIN { //Excel OfficeSheet sheet; bool xlsOn = sheet.IsAvailable("Microsoft"); if (xlsOn) sheet.Init("Microsoft"); //Open Office Calc if (!xlsOn) { xlsOn = sheet.IsAvailable("Open"); if (xlsOn) sheet.Init("Open"); } if (xlsOn) { FileSel fs; fs.Type(" ", "*.xls *.xlsx"); fs.AllFilesType(); if (fs.ExecuteOpen(" Excel ")) { sheet.OpenSheet(~fs, true); sheet.AddSheet(true); } } //Word OfficeDoc doc; // Word2003 Word2007, - Word2003. . bool docOn = doc.IsAvailable("Microsoft"); if (docOn) doc.Init("Microsoft"); //Open Office Writer if (!docOn) { docOn = doc.IsAvailable("Open"); if (docOn) doc.Init("Open"); } if (docOn) { FileSel fs; fs.Type(" Word", "*.doc *.docx *.rtf"); fs.AllFilesType(); if (fs.ExecuteOpen(" Word ")) { doc.OpenDoc(~fs, true); doc.AddDoc(true); } } }
ニュアンス
まとめ
参加しよう! 私が書いていない多くの点は、積極的な改善が必要です。 小さな分布で32 mbに値します。