• ベストアンサー

文字列から1文字取り出すには?

XP。studio.netです。 文字列から1文字ずつ取り出したいのですがどうしたらいいのでしょうか。 今 「テストは90点だった。」 「helloと言ってました。」 と言うような1バイト文字と2バイト文字が混合した文字列があるとします。 このような文字列から1文字ずつ文字を取り出すにはどうしたらいいでしょうか。 やりたいことは文字列の文章を一瞬で表示するのではなく、 タタタタと0.01秒に1文字ずつ表示するような表示の仕方がやりたいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

言語が書いてないけど、 C#とかVBだったらマルチバイト文字の混合はさほど気にすることはありません。(内部的にはユニコード扱いなので) 例えば、C#の場合、以下のようにして一文字ずつ取り出せます。 using System; public class Sample { public static void Main() { String str1 = "テストは90点だった。"; String str2 = "helloと言ってました。"; foreach(char c in str1){ Console.WriteLine(c); } foreach(char c in str2){ Console.WriteLine(c); } } }

yumichongu
質問者

補足

C++でした。ありがとうございました。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

一番簡単なのは、ワイド文字列にする方法です。

関連するQ&A

  • 消える!ワード文字変換候補列??

    ワード文章作成してたら、文字変換候補の場所の文字列が 変換しようとすると、一瞬しか表示しなくて、 消えてしまって、出来ません? 初心者ですが、どなたかに教えられてうまく直せるでしょうか?

  • 文字列を次々に表示するアプリケーション

    文字列を次々に表示するアプリケーション Javaで文字列を次々に表示するアプリケーションを作りたいんですが、どうすればいいですか? 例えば、 実行ボタンを押すと文字列abを表示 その1秒後に文字列abが消えて文字列cdを表示 さらにその1秒後に文字列cdが消えて文字列efを表示 のような感じです。 それと、文字の表示速度を変える機能もできればほしいです。 どなたか、教えていただければ助かります。

    • ベストアンサー
    • Java
  • 文字列を時間で入れ替え

    文字列を時間で入れ替えしたいです。 CGIでスクリプトで表示する文字列を管理したいと思っています。 当初は<MARQUEE>でやっていたのですが、流れるのではなく固定文字列が入れ替わるようにしたいんです。 CGIで1行目2行目~という感じで行ごとを保存します。 で、ページの一部にまず1行目を表示し、数秒後に2行目を表示、さらに数秒後に3行目を…という感じで5~6行を入れ替えるような形にしたいです。 以上、方法があれば教えてください。

  • fgetws関数で読み込んだUNICODE文字列の文字化け

    お世話になります。 UNICODE文字列について上手くいかない部分があったので質問します。 (1)ANSI文字コードのテキストファイルをfgetws関数で読み込む (2)読み込んだ文字列をID3DXFont::DrawTextWメソッドで描画 以上のことを行うと、1バイト文字(半角文字)はきちんと表示されるのに対し、2バイト文字は化けてしまいます。 きちんと表示されるようにするにはどうすれば良いでしょうか? 開発環境:Visual Studio 2005 C++ 開発言語:C/C++(Win32API)+DirectX9.0b ご存知の方がいましたら、よろしくお願いします。

  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • 文字列の中の1文字を比較するには?

    XP,Studio.NETでC++を書いています。 文字列の中の1文字を比較したいのですがどのようにしたらいいのかわかりません。 今以下のような文字列がstring[300]に入っているとします。 「\nは改行コードです。printf("");では"から"までの文字が画面に表示されます。」 このとき、1文字ずつを取り出し、文字を比較したいのですが (iを増加) if(string[i]=='\') flag=1; //処理→次にnが来る。 if(string[i]=='"') flag=2; //処理→文字はダブルコーテーション という処理をしたいのですが、 エラー:定数が多すぎます。 エラー:定数が2行目に続いています。 と出ます。どうしたらいいのでしょうか? どなたか教えていただけると幸いです。

  • 文字列分割方法

    フォームから入力されたデーターを文字数により4分割したい場合、 シングルバイトとマルチバイト文字列が混在していると、文字化けが起こってしまいます。 私が考えた方法は <?php $test="あああああいいいいいうううううえええええ"; $length = strlen($test); $length2 = (int)$length/4 $quarter[] = substr($test,0,$length2); $quarter[] = substr($test,$length2,$length2); $quarter[] = substr($test,$length2*2,$length2); $quarter[] = substr($test,$length2*3,$length2); echo $quarter[0]."<BR><BR>"; echo $quarter[1]."<BR><BR>"; echo $quarter[2]."<BR><BR>"; echo $quarter[3]."<BR><BR>"; ?> というものだったんですが、この場合$testに半角文字のaなどが入ると 文字化けしてしまいます。 上手く、マルチバイト・シングルバイト複合文字列を文字数により4分割する方法はないでしょうか? ご教授ください

    • ベストアンサー
    • PHP
  • 文字列の検索

    XPの時は簡単に出来たのですが、7にしてからファイルの中身の文字列を指定してファイルを探す仕方が解らなくなりました。 解る方、教えてください。

  • バイナリ文字列の比較について

    テキストをバイナリで読み込んで文字列を比較する際に 下記のロジックだと2バイトずつ読み込んで比較していくのですが 比較したい文字列が"He"だと合致するのですが1バイトずれの "el"だと合致しません。 ストリーム内の任意の文字列を判定したいときはどのように修正すればよいでしょうか? ----sample.txt--- Hello World!! ---------------- byte[] buf = new byte[2]; FileInputStream in = new FileInputStream("sample.txt"); int b; while ((b = in.read(buf)) != -1) { if ("He".equals(new String(buf))) { System.out.println("HelloのHeはOK"); } if ("el".equals(new String(buf))) { System.out.println("HelloのelはNG"); } }

    • ベストアンサー
    • Java
  • C言語の文字列について

    C言語で文字列のヌルについて、理解があいまいな点があり、教えて欲しいのですが、以下のようにsprintfで書式し代入した際に最後は0(ヌル文字)をセットしてくれるのでしょうか?4バイト目の文字が何か知りたいです。 char temp[100];時では0で初期化されていることは保障されていませんが、大抵は0で埋まっていますが、sprintfの仕様が知りたいです。 char temp[100]; sprintf(temp, "test");とした時に 01234バイト目 test?????????????.... 話は変わりますが、以下のようにするとエラーになりましたが、 特定の位置の値をセットする方法はどのようなものがあるのでしょうか? temp[10] = (temp[10] == '0') ? (char)'1' : (char)'0';