std::ispunct
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <cctype> で定義
|
||
int ispunct( int ch ); |
||
現在の C のロケールによる分類において、指定された文字が句読点かどうか調べます。 デフォルトの C ロケールでは、 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ が句読点として分類されます。
ch の値が unsigned char で表現できず、 EOF とも等しくない場合、動作は未定義です。
引数
| ch | - | 分類する文字 |
戻り値
文字が句読点であれば非ゼロの値、そうでなければゼロ。
ノート
<cctype> の他のすべての関数と同様に、引数の値が unsigned char で表現できず、 EOF とも等しくない場合、 std::ispunct の動作は未定義です。 プレーンな char (または signed char) でこれらの関数を安全に使用するためには、まず引数を unsigned char に変換するべきです。
bool my_ispunct(char ch)
{
return std::ispunct(static_cast<unsigned char>(ch));
}
同様に、イテレータの値型が char または signed char のとき、標準のアルゴリズムで直接これらを使用するべきではありません。 代わりに、まず値を unsigned char に変換してください。
int count_puncts(const std::string& s)
{
return std::count_if(s.begin(), s.end(),
// static_cast<int(*)(int)>(std::ispunct) // wrong
// [](int c){ return std::ispunct(c); } // wrong
// [](char c){ return std::ispunct(c); } // wrong
[](unsigned char c){ return std::ispunct(c); } // correct
);
}
例
Run this code
#include <iostream>
#include <cctype>
#include <clocale>
int main()
{
unsigned char c = '\xd7'; // the character × (multiplication sign) in ISO-8859-1
std::cout << "ispunct(\'\\xd7\', default C locale) returned "
<< std::boolalpha << (bool)std::ispunct(c) << '\n';
std::setlocale(LC_ALL, "en_GB.iso88591");
std::cout << "ispunct(\'\\xd7\', ISO-8859-1 locale) returned "
<< std::boolalpha << (bool)std::ispunct(c) << '\n';
}
出力:
ispunct('\xd7', default C locale) returned false
ispunct('\xd7', ISO-8859-1 locale) returned true
関連項目
| 指定されたロケールにおいて文字が句読点に分類されるかどうか調べます (関数テンプレート) | |
| ワイド文字が句読点文字かどうか調べます (関数) | |
ispunct の C言語リファレンス
| |
| ASCII値 | 文字 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10進 | 16進 | 8進 | |||||||||||||
| 0–8 | \x0–\x8
|
\0–\10
|
制御文字 (NUL など)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 9 | \x9
|
\11
|
タブ (\t)
|
≠0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 10–13 | \xA–\xD
|
\12–\15
|
ホワイトスペース (\n, \v, \f, \r)
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 14–31 | \xE–\x1F
|
\16–\37
|
制御文字 | ≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 32 | \x20
|
\40
|
空白 | 0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 33–47 | \x21–\x2F
|
\41–\57
|
!"#$%&'()*+,-./
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 48–57 | \x30–\x39
|
\60–\71
|
0123456789
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
≠0
|
≠0
|
| 58–64 | \x3A–\x40
|
\72–\100
|
:;<=>?@
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 65–70 | \x41–\x46
|
\101–\106
|
ABCDEF
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
≠0
|
| 71–90 | \x47–\x5A
|
\107–\132
|
GHIJKLMNOPQRSTUVWXYZ
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
| 91–96 | \x5B–\x60
|
\133–\140
|
[\]^_`
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 97–102 | \x61–\x66
|
\141–\146
|
abcdef
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
≠0
|
| 103–122 | \x67–\x7A
|
\147–\172
|
ghijklmnopqrstuvwxyz
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
0
|
| 123–126 | \x7B–\x7E
|
\172–\176
|
{|}~
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 127 | \x7F
|
\177
|
削除文字 (DEL)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|