Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,360件0C++11を用いて日本語の文字列の入力を受け取り、それ各文字ごとに切り抜いて数を数えるプログラムを作成しているのですが、日本語を扱ったのは始めてなので知見が足りません、できればstringにrange_based_forを書けたときのようにスラスラ取りたいです。個の銅バッジ3使用している用語が曖昧すぎるかもしれません。1.対象とする「文字コード」を明示したほうが良いでしょう。2.string型とはstd::stringか、又はその他ものかも述べた方が良いと考えられます。3.「切り抜く」とは具体的にどのような操作かも必要です。forからは想像できませんでした。いけそうですが...そういう話ではないかもしれませんね。16:162年近く経ってから質問文を編集する理由がよくわかりません。回答が付いていますが、回答に不足があるのであれば「答えて欲しいこと」を尋ねてください。用意されていますが、それぞれは対応する文字型(charなど)を扱うとしか定められていません。stringにはこのような機能すらありません。全てはライブラリ利用者に任せられているため、マルチバイト文字になるのであればその管理もライブラリ利用者の責任です。std::u16stringを使用することでUTF-16を扱うことができますが、その場合でもサロゲートペアの管理は利用者の責任ですし、std::u32stringでUTF-32としたとしてもやはり異体字セレクタなどを考慮するとやはり1文字に収まることはありません。結局のところ、何をもって「1文字」とみなすかは利用者次第であり、それに応じた処理を記述しすることになります。確かに異字体やら、サロゲートなど色々とありますが、これは日本語固有でなく、通常の日本語処理では考慮されない事も多いと思います。日本語を扱うかの検討が先と言う気がします。|-1C/C++言語規格上はリテラルを除けば「文字列」という概念は無いに等しく「文字コードを意味する型」の「配列」しかありません。ANSI(Shift-JIS)(別名:MBCS)系コードと、Unicode系コードで扱いが異なります。ワイド文字の配列にUnicodeの日本語を入れてみた(UTF-16等の場合)どちらも日本語を扱ってますが「1文字の概念」が文字コードによって異なるので、上記のように配列に必要な要素数が異なるわけですね。例外を除けばwchar_t型は1文字を意味しますので配列インデックスを指定して1文字を判定できます。L'あ';//全部'あ'にする}または、その機能を持っているより高度な「文字列クラス」もあるのでそれを使用すれば良いわけですね。個の銅バッジ皆様ご回答ありがとうございます!結局この問題はC/C++ではなくRubyを使用することによって解決しました。wchar_tの配列にする発想は思いつきませんでした。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。