タグ付けされた質問 「c++」

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。

9
C ++のprintf size_tへのクリーンなコード(または:C ++のC99の%zに最も近いもの)
を出力するいくつかのC ++コードがありますsize_t。 size_t a; printf("%lu", a); これを32ビットと64ビットの両方のアーキテクチャで警告なしにコンパイルしたいのですが。 これがC99の場合、を使用できますprintf("%z", a);。しかし、AFAICT %zは標準のC ++方言には存在しません。代わりに、私はしなければなりません printf("%lu", (unsigned long) a); これは本当に醜いです。 size_t言語に組み込まれたs を印刷する機能がない場合、適切なキャストをsize_tsに挿入して、適切なキャストを維持しながら、誤ったコンパイラ警告を排除できるprintfラッパーなどを作成できるかどうか疑問に思います。 何か案は? 編集私がprintfを使用している理由を明確にするために、私は整理している比較的大きなコードベースを持っています。printfラッパーを使用して、「警告を書き込み、それをファイルに記録し、場合によってはエラーでコードを終了する」などの処理を行います。coutラッパーを使用してこれを行うのに十分なC ++-fooを集めることはできるかもしれませんが、コンパイラの警告を取り除くためだけに、プログラムのすべてのwarn()呼び出しを変更したくありません。
96 c++  printf  size-t 

20
大規模なC ++プロジェクトで不要な#includeファイルを検出するにはどうすればよいですか?
Visual Studio 2008で大規模なC ++プロジェクトに取り組んでおり、不要な#includeディレクティブを含むファイルがたくさんあります。時々、#includesは単なるアーティファクトであり、すべてが削除されても問題なくコンパイルされ.cppます。他の場合では、クラスが前方宣言され、#includeがファイルに移動されます。これらの両方のケースを検出するための優れたツールはありますか?

3
概念とテンプレート制約の違いは何ですか?
C ++の完全な概念の提案とテンプレートの制約(たとえば、Dlangに表示される制約やC ++ 1yの新しいconcepts-liteの提案)の意味上の違いは何ですか? テンプレートの制約ができないよりも、本格的なコンセプトは何ができるのですか?
96 c++  c++11  d  c++-concepts 

4
Qtでのメモリ管理?
私はQtにかなり慣れていないので、メモリ管理やオブジェクトの寿命に関する基本的なことについて疑問に思っています。オブジェクトをいつ削除または破棄する必要がありますか?これは自動的に処理されますか? 次の例では、作成するオブジェクトのうち、削除する必要があるのはどれですか。が破棄さmyOtherClassれるmyClassと、インスタンス変数はどうなりますか?オブジェクトをまったく削除(または破棄)しないとどうなりますか?それは記憶の問題でしょうか? MyClass.h class MyClass { public: MyClass(); ~MyClass(); MyOtherClass *myOtherClass; }; MyClass.cpp MyClass::MyClass() { myOtherClass = new MyOtherClass(); MyOtherClass myOtherClass2; QString myString = "Hello"; } ご覧のとおり、これは初心者にとっては簡単なことですが、簡単な方法でこれについてどこで学ぶことができますか?
96 c++  qt  memory  object 

3
sizeof(int)が正しいのに、sizeof intが間違っているのはなぜですか?
私たちは、それが知っているsizeof任意のデータ型と式のサイズを計算するために使用される演算子であり、かつオペランドが式の場合は、括弧を省略することができます。 int main() { int a; sizeof int; sizeof( int ); sizeof a; sizeof( a ); return 0; } sizeof他の人が正しい間、の最初の使用法は間違っています。 gccを使用してコンパイルすると、次のエラーメッセージが表示されます。 main.c:5:9: error: expected expression before ‘int’ 私の質問は、C標準がこの種の操作を許可しない理由です。ウィルsizeof int任意のあいまいさを引き起こしますか?
96 c++  c  sizeof 

2
C ++で「関数を汚染する」とはどういう意味ですか?
CppConでのスコットシュラーの講演「紹介constexpr」の最後に、「機能を害する方法はありますか」と尋ねます。次に、これは(非標準的な方法ではありますが)次の方法で実行できることを説明します。 関数throwにaを置くconstexpr 未解決の宣言 extern const char* 未解決の参照externにthrow 私はここで自分の深みから少し外れているように感じますが、私は興味があります: 「機能を害する」とはどういう意味ですか? 彼が概説するテクニックの重要性/有用性は何ですか?
96 c++  constexpr 

3
なぜstd :: stouがないのですか?
C ++ 11はいくつかの新しい文字列変換関数を追加しました: http://en.cppreference.com/w/cpp/string/basic_string/stoul これには、stoi(文字列からint)、stol(文字列からlong)、stoll(文字列からlong long)、stoul(文字列からunsigned long)、stoull(文字列からunsigned long long)が含まれます。その不在で注目すべきは、stou(文字列から符号なし)関数です。それが必要ではないが、他のすべてが必要な理由はありますか? 関連:C ++ 11には「sto {short、unsigned short}」関数はありませんか?
96 c++  string  c++11  std 

15
テンプレート化されたC ++クラスを.hpp / .cppファイルに分割することは可能ですか?
.hppと.cppファイルに分割されているC ++テンプレートクラスをコンパイルしようとするとエラーが発生します。 $ g++ -c -o main.o main.cpp $ g++ -c -o stack.o stack.cpp $ g++ -o main main.o stack.o main.o: In function `main': main.cpp:(.text+0xe): undefined reference to 'stack<int>::stack()' main.cpp:(.text+0x1c): undefined reference to 'stack<int>::~stack()' collect2: ld returned 1 exit status make: *** [program] Error 1 これが私のコードです: stack.hpp: #ifndef _STACK_HPP #define …

14
C ++で文字列から特定の文字を削除する方法は?
たとえば、ユーザーに電話番号を入力してもらいます。 cout << "Enter phone number: "; INPUT: (555) 555-5555 cin >> phone; 文字列から「(」、「)」、「-」の文字を削除したい。文字列のremove、find、replace関数を確認しましたが、位置に基づいて動作することがわかりました。 文字「(」など)を渡し、文字列内のすべてのインスタンスを削除するために使用できる文字列関数はありますか?
96 c++  string  character 

6
値をビットフィールドに割り当てても同じ値が返されないのはなぜですか?
このQuoraの投稿で以下のコードを見ました。 #include <stdio.h> struct mystruct { int enabled:1; }; int main() { struct mystruct s; s.enabled = 1; if(s.enabled == 1) printf("Is enabled\n"); // --> we think this to be printed else printf("Is disabled !!\n"); } CとC ++の両方で、コードの出力は予想外です。 無効になっています !! あの投稿には「サインビット」に関する説明が載っていますが、どうやって設定したのか、そのまま反映されないのか分かりません。 誰かがより詳細な説明をすることはできますか? 注:両方のタグc & C ++それらの標準はビットフィールドを記述するためにわずかに異なるため、必須です。C仕様およびC ++仕様の回答を参照してください。


2
宣言はstd名前空間に影響を与えることができますか?
#include <iostream> #include <cmath> /* Intentionally incorrect abs() which seems to override std::abs() */ int abs(int a) { return a > 0? -a : a; } int main() { int a = abs(-5); int b = std::abs(-5); std::cout<< a << std::endl << b << std::endl; return 0; } 出力は-5and 5になると思っていましたが、出力は-5and …
96 c++  std  reserved 

8
C ++で構造体を比較しているときに==演算子が見つかりません
次の構造体の2つのインスタンスを比較すると、エラーが発生します。 struct MyStruct1 { MyStruct1(const MyStruct2 &_my_struct_2, const int _an_int = -1) : my_struct_2(_my_struct_2), an_int(_an_int) {} std::string toString() const; MyStruct2 my_struct_2; int an_int; }; エラーは: エラーC2678:バイナリ '==':タイプ 'myproj :: MyStruct1'の左側のオペランドをとる演算子が見つかりません(または許容できる変換がありません) どうして?

10
ACE vs Boost vs POCO [終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して質問を更新し、事実と引用で回答できるようにします。 2年前休業。 この質問を改善する 私はかなり前からBoost C ++ Librariesを使用しています。ネットワークプログラミング用のBoost Asio C ++ライブラリが大好きです。ただし、POCOとAdaptive Communication Environment(ACE)フレームワークの 2つのライブラリが紹介されました。それぞれの長所と短所を知りたいのですが。

2
Qt c ++集計 'std :: stringstream ss'の型が不完全であり、定義できません
私のプログラムには、整数を文字列に変換するこの関数があります。 QString Stats_Manager::convertInt(int num) { stringstream ss; ss << num; return ss.str(); } しかし、これを実行すると常にエラーが発生します: aggregate 'std::stringstream ss' has incomplete type and cannot be defined どういう意味かよくわかりません。しかし、それを修正する方法を知っている場合、またはさらにコードが必要な場合は、コメントしてください。ありがとう。
96 c++  string  qt  stringstream 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.