C++のisprint()関数の使い方と動作を解説
isprint()関数とは
C++のisprint()関数は、ヘッダーファイル「cctype.h」に定義されている組み込み関数で、指定した文字が印字可能(プリント可能)かどうかを判定します。
isprint()は、印字可能な文字に対してtrueを返します。空白文字(' ')も印字可能とみなされ、trueが返される点に注意してください。
また、cctypeヘッダーファイルには、ロケール固有の動作をするバージョンも用意されています。
isprint()関数の主な特徴
- 一連の文章の中に含まれる印字不可能な文字を簡単にチェックできます。
- 印字不可能な文字を効率的に処理できる組み込み関数です。
- プログラマーが記述するコードの行数を削減できます。
- その結果、プログラムのコンパイル時間の短縮にもつながります。
プログラムにcctype.hをインクルードすると、isprint()だけでなく、他の多くの関連関数も利用できるようになります。cctype.hに含まれる主な関数は以下のとおりです。
- isblank(文字が空白文字かどうかを判定)
- iscntrl(文字が制御文字かどうかを判定)
- isdigit(文字が10進数の数字かどうかを判定)
- isgraph(文字がグラフィック表現を持つかどうかを判定)
構文
isprint()の構文は以下のとおりです。
int isprint(int c);
「印字可能な文字とは、ディスプレイ上の印字位置を占める文字のこと」を指します。
isprint()のパラメータ
cは判定対象の文字です。int型にキャストして渡すか、EOFを指定します。
使用例
入力:first line /n second line /n
出力:first line
解説:改行文字は印字不可能な文字であるため、1行目のみが出力されます。
サンプルコード1
/* isprintの使用例 */
#include <stdio.h>
#include <ctype.h>
int main () {
int i=0;
char str[]="first line n second line n";
while (isprint(str[i])) {
putchar (str[i]);
i++;
}
return 0;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
first line n second line n
サンプルコード2
次の例では、文字列内の印字不可能な文字を検出し、空白文字に置き換えています。
#include <cctype>
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "Hellotallnhow are you";
for (int i=0; i<strlen(str); i++) {
if (!isprint(str[i]))
str[i] = ' ';
}
cout << str;
return 0;
}
出力結果
上記のコードを実行すると、以下の出力が得られます。
Hellotallnhow are you
-
C++で解く「3nスライスのピザ」問題 ― 動的計画法でスライスの合計を最大化する方法
問題の概要 大きさがまちまちの 3n 個のスライスからなるピザがあるとします。私と友人2人は、次のルールに従ってピザを取っていきます。 私が任意のスライスを1枚選びます。 友人のAmalは、私が選んだスライスの反時計回り方向に隣接するスライスを取ります。 友人のBimalは、私が選んだスライスの時計回り方向に隣接するスライスを取ります。 ピザのスライスがなくなるまで、この手順を繰り返します。 各スライスの大きさは、時計回りの順に並べた環状配列 slices として与えられます。求めるのは、私が手にできるスライスの大きさの合計の最大値です。 入出力例 入力が [9, 8, 6, 1, 1,
-
知っておきたい!コマンドラインでテキスト操作に使える13の便利なLinuxツール
GNU/Linuxディストリビューションには、テキスト処理のための豊富なプログラムが標準で含まれており、その多くはGNUコアユーティリティによって提供されています。習得には多少の学習が必要ですが、これらのツールを正しく使いこなせば、作業を大幅に効率化できます。 ここでは、コマンドラインユーザーなら必ず押さえておきたい、強力なテキスト操作ツールを13個紹介します。 1. cat catはファイルを連結(concatenate)するために設計されたツールですが、実際には単一ファイルの内容表示によく使われています。引数なしで実行すると、Ctrl + Dが押されるまで標準入力を読み続けます(ターミナ