-
C++14での一般化されたラムダ式
C ++ 11では、ラムダが導入されました。ラムダは基本的にコードの一部であり、他の関数呼び出しステートメント内にネストできます。ラムダ式をautoキーワードと組み合わせることで、後で使用できます。 C ++ 14では、これらのラムダ式が改善されています。ここで、一般化されたラムダを取得できます。たとえば、整数を追加したり、数値を追加したり、文字列を連結したりできるラムダを作成する場合は、この一般化されたラムダを使用する必要があります。 ラムダ式の構文は次のようになります: [](auto x, auto y) { return x + y; } より良いアイデアを得るために、1つの例を
-
Cの自己破壊コード
ここでは、Cで自己破壊コードを作成する方法を説明します。自己破壊コードは基本的にコードを実行し、実行後に実行可能ファイルを削除します。 このタスクは非常に簡単です。実行可能ファイル名を取得して削除する必要があります。コマンドライン引数を使用できます。 argv[0]は実行可能ファイル名を保持します。次に、remove()関数を使用して削除できます。 プログラムでは、そのファイルを削除した後、1行が印刷されていることがわかります。では、現在のファイルが存在しないときに次の行がどのように実行されるのかという疑問が生じますか? 実際には、変換されたコード全体が実行前にプライマリメモリにコピーさ
-
C言語でPOSIXセマフォを使用する方法
セマフォは、プロセスまたはスレッドの同期の概念です。ここでは、実際のプログラムでセマフォを使用する方法を説明します。 Linuxシステムでは、POSIXセマフォアライブラリを取得できます。これを使用するには、semaphores.hライブラリを含める必要があります。次のオプションを使用してコードをコンパイルする必要があります。 gcc program_name.c –lpthread -lrt sem_wait()を使用して、ロックまたは待機できます。そして、sem_post()でロックを解除します。セマフォは、プロセス間通信(IPC)のsem_init()またはsem_ope
-
Cで独自のヘッダーファイルを作成するにはどうすればよいですか?
ここでは、Cを使用して独自のヘッダーファイルを作成する方法を説明します。ヘッダーファイルを作成するには、名前を付けて1つのファイルを作成する必要があり、拡張子は(* .h)である必要があります。その関数には、main()関数はありません。そのファイルには、いくつかの変数、いくつかの関数などを入れることができます。 そのヘッダーファイルを使用するには、プログラムが配置されているのと同じディレクトリにある必要があります。ここで#includeを使用して、ヘッダーファイル名を入力する必要があります。名前は二重引用符で囲みます。インクルード構文は次のようになります。 #include”h
-
クライアントサーバーモデルを使用してC/C++で文字列を反転します
ここでは、システムを作成する方法を説明します。ここでは、1つのクライアントとサーバーを作成し、クライアントは1つの文字列をサーバーに送信でき、サーバーは文字列を逆にしてクライアントに戻ります。 ここでは、ソケットプログラミングの概念を使用します。クライアントサーバー接続を確立するには、ポートを作成する必要があります。ポート番号は、ソケットで使用できる任意の1つの番号です。接続を確立するには、クライアントとサーバーに同じポートを使用する必要があります。 プログラムを起動するには、最初にサーバープログラムを起動します- gcc Server.c –o server 次に、クライア
-
C++でのStringstream
ここでは、C++での文字列ストリームを確認します。文字列ストリームは、文字列オブジェクトを文字列に関連付けます。これを使用すると、文字列からcinのようなストリームであるかのように読み取ることができます。 Stringstreamにはさまざまなメソッドがあります。これらは以下のようなものです- clear(): ストリームをクリアするために使用されます str(): コンテンツがストリームに存在する文字列オブジェクトを取得および設定するには オペレーター<<: これにより、文字列ストリームに1つの文字列が追加されます : これは、stringstreamオブジェクトから読み取るた
-
C ++でバイナリコードの文字列を非表示にする最良の方法は?
ここでは、文字列をバイナリコードに隠す方法を説明します(ここでは、バイナリコードは16進数で表されます)。 アプローチは非常に簡単です。文字列ストリームを使用して、10進数を16進数に変換できます。次に、文字列から各文字を読み取り、そのASCII値を取得します。これらのASCII値は、16進値に変換されます。次に、それらを1つずつ印刷できます。 例 #include<iostream> #include<sstream> using namespace std; string dec_to_hex(int decimal){ //function is used to
-
C / C ++のnullで終了する文字列とは何ですか?
Cでは、文字列は基本的に文字の配列です。 C ++では、std::stringはその配列を拡張したものです。従来の文字配列にはいくつかの追加機能があります。ヌル文字で終了する文字列は基本的に文字のシーケンスであり、最後の要素は1つのヌル文字(「\ 0」で示されます)です。二重引用符(「…」)を使用して文字列を記述すると、コンパイラによってnullで終了する文字列に変換されます。 文字列のサイズは配列のサイズよりも小さい場合がありますが、その配列内にヌル文字がある場合は、その文字列の終わりとして扱われます。 次の例を参照してください。ここでは、std ::stringを使用して1つの文字列を
-
C++でstd::stringをトリミングする最良の方法は何ですか?
ここでは、C++で文字列をトリミングする方法を説明します。文字列のトリミングとは、文字列の左右の部分から空白を削除することを意味します。 C ++文字列をトリミングするには、ブースト文字列ライブラリを使用します。そのライブラリには、trim_left()とtrim_right()という2つの異なるメソッドがあります。文字列を完全にトリミングするには、両方を使用できます。 例 #include<iostream> #include<boost/algorithm/string.hpp> using namespace std; main(){
-
C / C ++でfloatとdoubleを比較するための最も効果的な方法は何ですか?
ここでは、CまたはC++を使用して2つの浮動小数点データまたは2つのdoubleデータを比較する方法を説明します。浮動小数点/倍精度の比較は、整数の比較とは異なります。 2つの浮動小数点またはdouble値を比較するには、比較の精度を考慮する必要があります。たとえば、2つの数値が3.1428と3.1415の場合、精度0.01までは同じですが、その後は0.001のように同じではありません。 この基準を使用して比較するには、ある浮動小数点数を別の浮動小数点数から減算した後の絶対値を見つけ、その結果が精度値よりも小さいかどうかを確認します。これにより、それらが同等であるかどうかを判断できます。
-
const int *、const int * const、およびint const *の違いは何ですか?
ここでは、整数ポインター、整数定数、および整数定数ポインターに基づくいくつかの異なるタイプの変数宣言を確認します。 それらを決定するために、時計回り/スパイラルルールを使用します。用語を話し合うことで、ルールも理解できます。 const int * 。これは、これがポインター型変数であることをコンパイラーに通知するために使用され、定数intのアドレスを格納できます。時計のルールはこのように言っています- もう1つはconstint*constです。これは、これが1つの定数ポインター変数であり、別の定数整数のアドレスを格納できることを示すために使用されます。時計のルールを適用する
-
C ++でのextern「C」の効果は何ですか?
extern“ C”キーワードは、C++の関数名にCリンケージを持たせるために使用されます。この場合、コンパイラは関数をマングルしません。最初にC++のマングリングとは何かを見てみましょう。次に、外部の「C」キーワードについて説明します。 C ++では、関数のオーバーロード機能を使用できます。この機能を使用して、同じ名前の関数を作成できます。唯一の違いは、引数のタイプと引数の数です。ここでは、リターンタイプは考慮されていません。ここで、C ++がオブジェクトコード内のオーバーロードされた関数をどのように区別するかが問題になりますか? オブジェクトコードでは、引数に関する情報を追加して名前を
-
C ++のコピー初期化と直接初期化に違いはありますか?
コピーの初期化は、コピーコンストラクターの概念を使用して実行できます。コンストラクターはオブジェクトを初期化するために使用されることがわかっています。コピーコンストラクターを作成して、他のオブジェクトのコピーを作成できます。つまり、現在のオブジェクトを別のオブジェクトの値で初期化できます。一方、直接初期化は代入演算を使用して行うことができます。 これら2種類の初期化の主な違いは、コピーの初期化により、新しいオブジェクト用に個別のメモリブロックが作成されることです。ただし、直接初期化によって新しいメモリスペースが作成されることはありません。参照変数を使用して、前のメモリブロックを指します。 コ
-
C ++の関数/メソッドのキーワード「インライン」はいつ書く必要がありますか?
C ++では、インライン キーワードはさまざまな場所で使用されています。インライン変数またはインライン名前空間を作成し、インラインメソッドまたは関数を作成します。 C++インライン 関数は、クラスで一般的に使用される強力な概念です。関数がインラインの場合、コンパイラは、コンパイル時に関数が呼び出される各ポイントにその関数のコードのコピーを配置します。 インライン関数を変更すると、コンパイラはすべてのコードをもう一度置き換える必要があるため、関数のすべてのクライアントを再コンパイルする必要があります。そうしないと、古い機能が続行されます。 関数をインライン化するには、キーワードインラインを
-
C ++でビッグエンディアンとリトルエンディアンの値を変換するにはどうすればよいですか?
ここでは、C++でリトルエンディアン値をビッグエンディアンに変換する方法またはビッグエンディアン値をリトルエンディアンに変換する方法を説明します。実際のディスカッションに進む前に、ビッグエンディアンとリトルエンディアンとは何ですか? 異なるアーキテクチャでは、マルチバイトデータは2つの異なる方法で保存できます。上位バイトが最初に格納される場合もあります。その場合、これらはビッグエンディアンと呼ばれ、下位バイトが最初に格納される場合は、リトルエンディアンと呼ばれます。 たとえば、数値が0x9876543210の場合、ビッグエンディアンは-になります。 リトルエンディアンは次のようにな
-
C ++のnullptrとは正確には何ですか?
このセクションでは、C++のnullptrを確認します。 nullptrは、ポインタリテラルを示します。これは、タイプstd::nullptr_tのprvalueです。 nullptrから任意のポインタ型および任意のメンバー型へのポインタのnullポインタ値への暗黙の変換プロパティがあります。この概念を理解するために、1つのプログラムを見てみましょう。 例 #include<iostream> using namespace std; int my_func(int N){ //function with integer type parameter co
-
C++での浮動小数点の比較
ここでは、C++を使用して2つの浮動小数点データを比較する方法を説明します。浮動小数点の比較は整数の比較とは異なります。 2つの浮動小数点値を比較するには、比較の精度を考慮する必要があります。たとえば、2つの数値が3.1428と3.1415の場合、精度0.01までは同じですが、その後は0.001のように同じではありません。 この基準を使用して比較するには、ある浮動小数点数を別の浮動小数点数から減算した後の絶対値を見つけ、その結果が精度値よりも小さいかどうかを確認します。これにより、それらが同等であるかどうかを判断できます。 例 #include <iostream> #incl
-
Visual Studio 2012にライブラリを含める方法は?
Visual Studio 2012でライブラリを追加するには、2つの異なる方法があります。 1つ目は手動による方法です。 2つ目は、コードからライブラリを追加することです。 最初に手動の方法を見てみましょう。 ライブラリを追加するには、次の5つの手順に従う必要があります- 適切な宣言を含む#includeステートメントに必要なファイルを追加します。例- #include “library.h” コンパイラルックアップ用のインクルードディレクトリを追加します; 構成プロパティ/VC++ディレクトリ/インクルードディレクトリに移動します 次に、クリックして編集し
-
G++を使用して複数の.cppおよび.hファイルをコンパイルする
file_name.hやfile_name.cppのような複数のファイルを一度にコンパイルするには、リストのようなファイルを次々に使用できます。構文は次のようになります- g++ abc.h xyz.cpp プログラムを実行するには、これを使用できます- ./a.out 例 float area(float r){ return (3.1415*r*r); //area of a circle } float area(float l, float w){ return (l * w); //area of a rectangle } 例
-
C ++ 11でスレッドを終了するにはどうすればよいですか?
ここでは、C++11でスレッドを終了する方法を説明します。 C ++ 11には、スレッドを終了する直接的な方法はありません。 std ::future はスレッドに使用でき、futureの値が利用可能になったときに終了する必要があります。スレッドにシグナルを送信したいが、実際の値を送信しない場合は、void型オブジェクトを渡すことができます。 1つのpromiseオブジェクトを作成するには、次の構文に従う必要があります- std::promise<void> exitSignal; 次に、メイン関数でこの作成されたpromiseオブジェクトから関連するfutureオブジェクト