お世話になっています。C++/CLI アプリケーションで
現在、CSVファイルから読み込んだファイルを表示する住所録を作成しています。
そこで、質問なのですが
カナによる絞込み検索を行いたいのですが、
現在考えているのは、コンボボックスで、ア行~ワ行を任意で選択
→検索ボタンを押す
→選択された行を表示
と考えているのですが、ア行を選択した場合どのようにア~オの
カナの人を表示させれば良いかわかりません。
よろしければ、どのようにすればよいのかご教授ください。
> ア行を選択した場合どのようにア~オの
> カナの人を表示させれば良いかわかりません。
基データとなるCSVには氏名のふりがなが入っているのならば、
なにがわからないのか見当がつきません。
問題は何ですか?
ふりがなは入っています。
わからないのは、そのア~オから始まる人のデータを取得する方法です
>ふりがなは入っています。
>わからないのは、そのア~オから始まる人のデータを取得する方法です
では
1.ふりがな中にアが含んだものがあるかどうか調べる方法はお判りですか?
2.ふりがな中にアイウエオのどれかがあることを調べる方法はお判りですか?
Cの文法でならばわかるのですが、、正直今の私では答えはNOになるかと思います。
> わからないのは、そのア~オから始まる人のデータを取得する方法です
先頭の1文字がア~オのいずれかであればいい。
> Cの文法でならばわかるのですが
ではそれを示してください。
if((strcmp(add[i].if((strcmp(add[i].kana,ア) > 0)
&& (strcmp(add[i].kana,カ) < 0))
以前にCで作成したときの判別方法です。
それが正しく動くならそれつかえばいいじゃない。
なにが問題なんですか?
error C2664: 'strcmp' : 1 番目の引数を 'System::String ^' から 'const char *'
に変換できません。(新しい機能 ; ヘルプを参照)使用可能なユーザー定義された変換演
算子がない、またはマネージ型をアンマネージ型に変換できません。
このようなエラーが出てしまいます。。。
いや、そじゃなくてぇ。
Cでやってることが理解できているなら、
それと等価なC++/CLIコードに置き換えればいいでしょう?
using namespace System;
int main() {
array<String^>^ names =
{ Lアイダ, Lイトウ, Lカガワ, Lキタジマ, Lオガワ };
for each ( String^ name in names ) {
if ( name[0] >= L'ア' && name[0] < L'カ' ) {
Console::WriteLine(name);
}
}
}
>επιστημηさん
ありがとうございます。
説明していただいても、まだ少し???という状況なのですが、
ここまで説明して頂いたので、後は自分で勉強してなんとなると思います!
ありがとうございます!!
#まだまだ未熟者なので等価なC++/CLIコードに置き換えると言うことが
#επιστημηさんのようにはいきませんでした。
> 後は自分で勉強してなんとなると思います!
てか、マニュアル読みました?
http://msdn.microsoft.com/ja-jp/library/system.string.aspx
使えそうなメソッドが見つかりませんでしたか?
using namespace System;
int main() {
array<String^>^ names = { Lアイダ, Lイトウ, Lカガワ, Lキタジマ, Lオ
ガワ };
array<Char>^ a = { L'ア', L'イ', L'ウ', L'エ', L'オ'};
for each ( String^ name in names ) {
if ( name->IndexOfAny(a) == 0 ) {
Console::WriteLine(name);
}
}
}
>てか、マニュアル読みました?
はい。。
一応読んではみたのですが、恥ずかしながら見つけることはできませんでした。
> 見つけることはできませんでした。
読みが足りない。strcmp と(機能的に)まんま同じもんがあります。
using namespace System;
int main() {
array<String^>^ names =
{ Lアイダ, Lイトウ, Lカガワ, Lキタジマ, Lオガワ };
for each ( String^ name in names ) {
if ( String::Compare(name,Lア) > 0 && String::Compare(name,Lカ) < 0 ) {
Console::WriteLine(name);
}
}
}