ページ 1 / 1
c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年11月30日(月) 05:25
by nushi
windows系のヘッダー(windows.h等)をインクルードせずにカタカナの文字を判定したいです。
このような縛りで実現可能でしょうか?
できるのなら初心者にもわかるくらいで流れを教えてもらえるとありがたいです。
よろしくお願いします!!
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年11月30日(月) 11:17
by かずま
nushi さんが書きました:windows系のヘッダー(windows.h等)をインクルードせずにカタカナの文字を判定したいです。
このような縛りで実現可能でしょうか?
実現可能です。
コード:
#include <stdio.h> // printf
#include <locale.h> // setlocale
#include <wchar.h> // fgetws
#define BUF_SIZE 256
int main(void)
{
wchar_t buf[BUF_SIZE], c; int i;
setlocale(LC_CTYPE, "");
while (fgetws(buf, BUF_SIZE, stdin))
for (i = 0; c = buf[i]; i++)
if (c >= L'ァ' && c <= L'ヶ' || c == L'ー' ||
c >= L'ア' && c <= L'ン' || c == L'ー' || c == L'゙' || c == L'゚')
printf("%lc: 片仮名\n", c);
else
printf("%lc: 片仮名ではない\n", c);
return 0;
}
nushi さんが書きました:できるのなら初心者にもわかるくらいで流れを教えてもらえるとありがたいです。
詳しい説明が聞きたければ、そちらの環境を詳しく説明してください。
OS は Linux か Windows か Mac OS かなど。
コンパイラは何か。gcc か VC++ かなど。
文字コードは何か。UTF-8 か Shift-JIS かなど。
わかないところは、わからないと書いてかまいません。
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年11月30日(月) 11:24
by かずま
かずま さんが書きました:実現可能です。
コード:
c >= L'ア' && c <= L'ン' || c == L'ー' || c == L'゙' || c == L'゚')
次のように訂正します。
コード:
c >= L'ヲ' && c <= L'゚' || c == L'ー')
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年11月30日(月) 12:33
by みけCAT
一般的なテクニックとして、適切なプロトタイプ宣言や構造体の定義、定数の定義を直接ソースコードに書くことで、
ヘッダをインクルードせずにライブラリの関数を使うことが可能です。
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月01日(火) 22:56
by nushi
windowsでvisual studioで組んでます!
他はわかんないです汗
全角カタカナも同じ要領でできるんですか??
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月02日(水) 00:28
by かずま
nushi さんが書きました:windowsでvisual studioで組んでます!
他はわかんないです汗
全角カタカナも同じ要領でできるんですか??
No.2 のプログラムに No.3 の修正を加えて実行してみていないのですか?
これは C のプログラムですが、C++ としてもコンパイルできるはずです。
件名に「c++で」と書いてあるので、もっと C++ らしく書いてみました。
コード:
#include <iostream> // wcin, wcout
#include <locale> // locale::global
#include <string> // wstring
int main()
{
using namespace std;
wstring buf;
locale::global(locale(""));
while (getline(wcin, buf)) {
size_t n = buf.size();
for (size_t i = 0; i < n; i++) {
wchar_t c = buf[i];
if (c >= L'ァ' && c <= L'ヶ' || c == L'ー' ||
c >= L'ヲ' && c <= L'゚' || c == L'ー')
wcout << c << L": 片仮名\n";
else
wcout << c << L": 片仮名ではない\n";
}
}
}
これではどうですか?
最初の質問で、「カタカナの文字を判定したいです」と
書いてあったので、こういうプログラムにしました。
件名には、「カタカナの文字検索をしたい」とありますが、
判定ではなく検索がしたいのですか?
どんなふうにですか?
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月02日(水) 03:48
by かずま
全角と半角を区別したければ、
コード:
if (c >= L'ァ' && c <= L'ヶ' || c == L'ー')
wcout << c << L": 全角片仮名\n";
else if (c >= L'ヲ' && c <= L'゚' || c == L'ー')
wcout << c << L": 半角片仮名\n";
else
wcout << c << L": 片仮名ではない\n";
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月02日(水) 09:48
by nushi
オブジェクトの名前をつけれるようにしたいのですが
その際にカタカナ以外で名前を付けようとした時に
「カタカナで入力してください」と表示させ
再入力させたかったんです!!
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月03日(木) 05:27
by かずま
nushi さんが書きました:オブジェクトの名前をつけれるようにしたいのですが
そのオブジェクトの名前を入れている変数の型は次のどれですか?
char []、wchar_t []、string、wstring。
Re: c++でカタカナの文字検索をしたい(縛りあり
Posted: 2015年12月03日(木) 19:08
by qqwwee1990
全角カタカナも同じ要領でできるんですか?
広告的リンクを削除しました。 by ソフト屋