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

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

4
std :: string length()およびsize()メンバー関数
私はこの質問の回答を読んでいて、実際に呼び出されるメソッドがあることを発見しlength()ましたstd::string(私は常にを使用していましたsize())。このメソッドをstd::stringクラスに含める理由はありますか?私は、MSDNとCppRefernceの両方を読んで、そして、彼らは差がないことを示しているように見えるsize()とlength()。もしそうなら、それはクラスのユーザーをより混乱させませんか?
265 c++  string  stl  size 

6
ループ内の変数を宣言する、良い習慣か悪い習慣か?
質問1:ループ内で変数を宣言することは良い習慣ですか、それとも悪い習慣ですか? パフォーマンスの問題(ほとんどは「いいえ」と言われています)があるかどうかについて他のスレッドも読んだので、変数は使用する場所の近くに常に宣言する必要があります。これを回避する必要があるかどうか、またはそれが実際に望ましいかどうかは疑問です。 例: for(int counter = 0; counter <= 10; counter++) { string someString = "testing"; cout << someString; } 質問#2:ほとんどのコンパイラーは、変数がすでに宣言されていることを認識し、その部分をスキップしますか、それとも実際に毎回メモリー内に変数のスポットを作成しますか?

30
C ++でCSVファイルを読み取って解析するにはどうすればよいですか?
C ++でCSVファイルのデータを読み込んで使用する必要があります。この時点では、実際にはカンマで区切られたパーサーになります(つまり、新しい行やカンマをエスケープする必要はありません)。主なニーズは、メソッドが呼び出されるたびに次の行のベクトルを返す行ごとのパーサーです。 私はかなり有望に見えるこの記事を見つけました:http : //www.boost.org/doc/libs/1_35_0/libs/spirit/example/fundamental/list_parser.cpp 私はBoost's Spiritを使ったことがありませんが、試してみたいと思っています。しかし、私が見落としているより簡単な解決策がない場合にのみ。
264 c++  parsing  text  csv 


28
C ++アプリケーションにリフレクションを追加するにはどうすればよいですか?
C ++クラスの名前、内容(つまり、メンバーとそのタイプ)などをイントロスペクトできるようにしたいと思います。ここでは、リフレクションのあるマネージC ++ではなく、ネイティブC ++について話しています。C ++がRTTIを使用していくつかの限られた情報を提供することを理解しています。この情報を提供できる追加のライブラリ(または他の手法)はどれですか?

10
C / C ++での整数除算の高速上限
与えられた整数値xとy、CとC ++は両方ともq = x/y、等価の浮動小数点の床を商として返します。代わりに天井を返す方法に興味があります。たとえば、ceil(10/5)=2およびceil(11/5)=3。 明らかなアプローチには、次のようなものが含まれます。 q = x / y; if (q * y < x) ++q; これには、追加の比較と乗算が必要です。そして私が見た(実際に使用された)他の方法は、floatまたはとしてキャストすることを含みdoubleます。追加の乗算(または2番目の除算)と分岐を回避し、浮動小数点数としてのキャストを回避するより直接的な方法はありますか?
262 c++  c  algorithm  math 


11
char *をstd :: stringに変換します
を使用して、でstd::string取得しfgets()たデータを保存する必要があります。これを行うには、char*戻り値をfgets()にstd::string配列に格納することを。これはどのように行うことができますか?
262 c++  stdstring 


5
C ++例外をスローする方法
例外処理(つまり、自分の目的のためにスロー、トライ、キャッチのステートメントをカスタマイズする方法)について非常によく理解していません。 たとえば、次のように関数を定義しました。 int compare(int a, int b){...} aまたはbのいずれかが負の場合に、関数がメッセージを表示して例外をスローするようにしたい 関数の定義でこれにどのように取り組むべきですか?



7
Vimでのオートコンプリート
一言で言えば、私が探してる作業のVimエディタの自動補完機能。VimはLinuxでIDEを完全に置き換えると以前に主張しましたが、確かにそうですが、オートコンプリートという重要な機能が1つ欠けています。 私が知っているCtrl+ N、あふれんばかりのctagsの統合、タグリスト、cppcompleteとOmniCppComplete。悲しいかな、これらはどれも「動作するオートコンプリート」の私の説明に適合しません。 Ctrl+はN、スペルの方法を忘れた場合にのみ(classまたは)うまく機能しますwhile。しかたがない。 Ctagsは基本的な機能を提供しますが、多くの欠点があります。 Taglistは単なるCtagsラッパーであり、そのため、その欠点のほとんどを継承しています(ただし、宣言をリストする場合はうまく機能します)。 cppcompleteが約束どおりに機能しないだけでなく、私が何を間違えたか、またはそれが正しく「機能」していて、制限が仕様によるものであるかどうかがわかりません。 OmniCppCompleteにはcppcompleteと同じ問題があるようです。つまり、オートコンプリートが適切に機能しません。さらに、tagsファイルをもう一度手動で更新する必要があります。 私は、現代の本格的なIDEでさえ、優れたC ++コード補完を提供していないという事実を知っています。だからこそ、今までこの分野でのVimの欠如を受け入れてきました。しかし、コード補完の基本的なレベルは要求するほど多くはなく、実際に生産的な使用に必要とされると思います。だから、少なくとも次のことを達成できる何かを探しています。 構文認識。cppcompleteの約束(ただし、私には提供されません)、次の正しいスコープを認識した自動補完: variableName.abc variableName->abc typeName::abc そして、実際には、それ以外のものはまったく役に立ちません。 構成可能性。(簡単に)ソースファイルの場所を指定する必要があるため、スクリプトがオートコンプリート情報を取得する場所を指定します。実際、必要なインクルードパスを指定するMakefileがディレクトリにあります。Eclipseはそこにある情報を解釈できます。なぜVimスクリプトも解釈しないのですか? 最新性。ファイル内の何かを変更したらすぐに、オートコンプリートにこれを反映させたいと思います。手動でトリガーしたくありませんctags(または同等のもの)。また、変更があるべきインクリメンタル私は1つのファイルだけを変更したとき、すなわち、それは完全だが、受け入れられないためにctags(巨大な可能性がある)の再解析ディレクトリツリー全体へ。 何か忘れましたか?自由に更新してください。 たくさんの設定やいじりに慣れていますが、ソリューションを最初からプログラミングしたくありません。Vimスクリプトのデバッグは得意ではありません。 最後に、JavaとC#についても同様のものが欲しいのですが、期待するのは多すぎると思いctagsます。コードファイルを解析するだけで、JavaとC#の両方に、インデックスを付ける必要のある巨大なプリコンパイル済みフレームワークがあります。残念ながら、IDEなしで.NETを開発することは、C ++よりもPITAのほうがはるかに優れています。
257 c++  vim  ide  autocomplete 

16
デストラクタから例外を投げる
ほとんどの人が言うん未定義の動作結果そう-デストラクタの外に例外をスローしません。Stroustrupは、「ベクターデストラクタはすべての要素に対して明示的にデストラクタを呼び出す。これは、要素デストラクタがスローすると、ベクトルの破棄が失敗することを意味する...デストラクタからスローされる例外から保護するための適切な方法は実際にはないため、ライブラリ要素デストラクタがスローした場合の保証はありません」(付録E3.2から)。 この記事はそうではないようです-投げるデストラクタは多かれ少なかれ大丈夫です。 だから私の質問はこれです-デストラクタからスローすると未定義の動作が発生する場合、デストラクタ中に発生したエラーをどのように処理しますか? クリーンアップ操作中にエラーが発生した場合、それを無視しますか?スタックを処理できる可能性があるが、デストラクタで正しく処理できないエラーの場合、デストラクタから例外をスローするのは理にかなっていますか? 明らかにこれらの種類のエラーはまれですが、可能です。

12
ポインターとリファレンス
機能する元の変数を関数に与える場合のより良い実践とは: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); または: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW:別のものを選ぶ理由はありますか?

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