String型の文字列の全角・半角判断
Qrt  2017/09/19(Tue) 21:03
String型の文字列に全角・半角がそれぞれ何文字あるのか判定する方法がわからないです。
std::string型に変換してからIsDBCSLeadByte関数を使って判定しようとしたのですがうまくいきませんでした…
記事編集
Reputeless  2017/09/20(Wed) 01:00
ASCII コードの範囲の文字をカウントしたいのであればこれだけで済みます。
わざわざ変換する必要はありません。

# include <Siv3D.hpp>

size_t CountAscii(const String& text)
{
size_t count = 0;

for (const auto& ch : text)
{
if (InRange<int32>(ch, 0, 127))
{
++count;
}
}

return count;
}

void Main()
{
const String text = L"a b.c&あいうえお";

const size_t count = CountAscii(text);

Println(L"半角: ", count);

Println(L"全角: ", text.length - count);

while (System::Update())
{

}
}
編集
Qrt  2017/09/22(Fri) 19:58
実行したところうまく行きました
ありがとうございました
編集
件名
Re: String型の文字列の全角・半角判断
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -