c++でカタカナの文字検索をしたい(縛りあり

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nushi
記事: 5
登録日時: 9年前
住所: 愛知

c++でカタカナの文字検索をしたい(縛りあり

#1

投稿記事 by nushi » 9年前

windows系のヘッダー(windows.h等)をインクルードせずにカタカナの文字を判定したいです。

このような縛りで実現可能でしょうか?

できるのなら初心者にもわかるくらいで流れを教えてもらえるとありがたいです。

よろしくお願いします!!

かずま

Re: c++でカタカナの文字検索をしたい(縛りあり

#2

投稿記事 by かずま » 9年前

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++でカタカナの文字検索をしたい(縛りあり

#3

投稿記事 by かずま » 9年前

かずま さんが書きました:実現可能です。

コード:

                c >= L'ア' && c <= L'ン' || c == L'ー' || c == L'゙' || c == L'゚')
次のように訂正します。

コード:

                c >= L'ヲ' && c <= L'゚' || c == L'ー')

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: c++でカタカナの文字検索をしたい(縛りあり

#4

投稿記事 by みけCAT » 9年前

一般的なテクニックとして、適切なプロトタイプ宣言や構造体の定義、定数の定義を直接ソースコードに書くことで、
ヘッダをインクルードせずにライブラリの関数を使うことが可能です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

nushi
記事: 5
登録日時: 9年前
住所: 愛知

Re: c++でカタカナの文字検索をしたい(縛りあり

#5

投稿記事 by nushi » 9年前

windowsでvisual studioで組んでます!
他はわかんないです汗

全角カタカナも同じ要領でできるんですか??

かずま

Re: c++でカタカナの文字検索をしたい(縛りあり

#6

投稿記事 by かずま » 9年前

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++でカタカナの文字検索をしたい(縛りあり

#7

投稿記事 by かずま » 9年前

全角と半角を区別したければ、

コード:

            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";

nushi
記事: 5
登録日時: 9年前
住所: 愛知

Re: c++でカタカナの文字検索をしたい(縛りあり

#8

投稿記事 by nushi » 9年前

オブジェクトの名前をつけれるようにしたいのですが
その際にカタカナ以外で名前を付けようとした時に
「カタカナで入力してください」と表示させ
再入力させたかったんです!!

かずま

Re: c++でカタカナの文字検索をしたい(縛りあり

#9

投稿記事 by かずま » 9年前

nushi さんが書きました:オブジェクトの名前をつけれるようにしたいのですが
そのオブジェクトの名前を入れている変数の型は次のどれですか?
char []、wchar_t []、string、wstring。

qqwwee1990
記事: 1
登録日時: 9年前
住所: http://www.example.com/
連絡を取る:

Re: c++でカタカナの文字検索をしたい(縛りあり

#10

投稿記事 by qqwwee1990 » 9年前

全角カタカナも同じ要領でできるんですか?

広告的リンクを削除しました。 by ソフト屋

閉鎖

“C言語何でも質問掲示板” へ戻る