C++ STLのiswcntrl()関数とは?構文・使い方・サンプルコードを解説
C++標準テンプレートライブラリ(STL)に含まれるiswcntrl()関数は、指定されたワイド文字が制御文字であるかどうかを判定するための関数です。制御文字とは、C/C++において画面上の表示位置(印字位置)を占有しない特殊な文字のことを指します。たとえば改行文字(\n)などがこれに該当します。iswcntrl()関数は、cwctypeヘッダーファイル内で定義されています。
iswcntrl()関数の構文
int iswcntrl (wint_t c)
パラメータ
− c − 制御文字かどうかを判定したい対象の文字を指定します。
戻り値
− 引数cが制御文字である場合は0以外の値(非ゼロ)を返し、制御文字でない場合は0を返します。
本記事のサンプルプログラムで用いる手法
- 文字列または文字を入力として受け取る
- 制御文字が現れるまでループ処理を繰り返す
- 最初の制御文字が見つかるまでの部分だけ文字列として表示する
- 最初の制御文字を検出した時点でループから抜け出す
例1:改行文字で文字列を分割して出力する
#include <stdio.h>
#include <wctype.h>
int main (){
int i=0;
wchar_t str[] = L"first line \n second line \n";
while (!iswcntrl(str[i])) {
putchar (str[i]);
i++;
}
return 0;
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
first line
この例では、文字列中に最初に現れる改行文字(\n)が制御文字として検出された時点でループが終了し、その直前までの「first line」のみが出力されています。
例2:制御文字より前の部分だけを出力する
#include <stdio.h>
#include <wctype.h>
int main (){
int i=0;
wchar_t str[] = L"first linesecond line \nthird line";
while (!iswcntrl(str[i])) {
putchar (str[i]);
i++;
}
return 0;
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
first linesecond line
このように、iswcntrl()関数を使うことで、文字列の中から最初の制御文字(ここでは改行文字)を見つけ出し、それ以降の部分を切り捨てて出力することができます。ワイド文字列を扱う際に、制御文字の位置を判定したい場合に非常に便利な関数です。
-
C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説
cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引
-
C++ STLのsinh()関数の使い方を徹底解説
sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin