Skip to content

文字コード変換

Reputeless edited this page Dec 23, 2016 · 1 revision

文字列変換早見表

std::string へ std::wstring へ String へ const char* へ const wchar* へ
std::string から = Widen().str() Widen() std::string::c_str() Widen().c_str()
std::wstring から Narrow() = = Narrow().c_str() std::wstring::c_str()
String から String::narrow() String::str() = String::narrow().c_str() String::c_str()

std::string から String に変換する

# include <Siv3D.hpp>

void Main()
{
	const std::string s1 = "いろはにほへと";

	const String s2 = Widen(s1);

	Println(s2);

	WaitKey();
}

std::wstring から String に変換する

# include <Siv3D.hpp>

void Main()
{
	const std::wstring s1 = L"いろはにほへと";

	const String s2 = s1;

	Println(s2);

	WaitKey();
}

String から std::string に変換する

# include <Siv3D.hpp>

void Main()
{
	const String s1 = L"いろはにほへと";

	const std::string s2 = s1.narrow();

	Println(s2 == "いろはにほへと");

	WaitKey();
}

String から std::wstring に変換する

# include <Siv3D.hpp>

void Main()
{
	const String s1 = L"いろはにほへと";

	const std::wstring s2 = s1.str();

	Println(s2 == L"いろはにほへと");

	WaitKey();
}

String から const char* に変換する

# include <Siv3D.hpp>

std::string Str(const char* str)
{
	return std::string(str);
}

void Main()
{
	const String s1 = L"いろはにほへと";

	const std::string s2 = Str(s1.narrow().c_str());

	Println(Widen(s2));

	WaitKey();
}

String から const wchar_t* に変換する

# include <Siv3D.hpp>

std::wstring Str(const wchar_t* str)
{
	return std::wstring(str);
}

void Main()
{
	const String s1 = L"いろはにほへと";

	const std::wstring s2 = Str(s1.c_str());

	Println(s2);

	WaitKey();
}

パーセントエンコードから UTF8 に変換し、さらに String に変換する

# include <Siv3D.hpp>

void Main()
{
	const String text = L"ABCDEF%E3%81%84%E3%82%8D%E3%81%AF%E3%81%AB%E3%81%BB%E3%81%B8%E3%81%A8";

	std::string utf8;

	// UTF-8 URL デコード
	for (size_t i = 0; i < text.length; ++i)
	{
		if (text[i] == L'%')
		{
			const String code = { text[i + 1], text[i + 2] };

			utf8.push_back(FromString<uint8>(code, 16));

			i += 2;
		}
		else
		{
			utf8.push_back(static_cast<uint8>(text[i]));
		}
	}

	Println(FromUTF8(utf8));

	WaitKey();
}

String から UTF8 に変換し、さらにパーセントエンコードする

# include <Siv3D.hpp>

void Main()
{
	const String text = L"いろはにほへと";

	const String unreserved(L"-._~");

	String encoded;

	// UTF-8 URL エンコード
	for (auto ch : ToUTF8(text))
	{
		if (IsAlnum(ch) || unreserved.includes(ch))
		{
			encoded.push_back(ch);
		}
		else
		{
			encoded.push_back(L'%');

			encoded.append(Pad(ToHex<uint8>(ch), { 2, L'0' }).upper());
		}
	}

	Println(encoded);

	WaitKey();
}

文字列をパーセントエンコードする

# include <Siv3D.hpp>

void Main()
{
	Println(CharacterSet::PercentEncode(L"いろはにほへと"));

	WaitKey();
}

ASCII 文字で構成されたマルチバイト文字列を String に変換する

Widen よりも高速に変換を行います。

# include <Siv3D.hpp>

void Main()
{
	Println(WidenAscii("Siv3D"));

	WaitKey();
}

ASCII 文字で構成された String を std::string に変換する

Narrow よりも高速に変換を行います。

# include <Siv3D.hpp>

void Main()
{
	const std::string str = NarrowAscii(L"Siv3D");

	Println(str == "Siv3D");

	WaitKey();
}

Siv3D について

  1. Siv3D の基本
  2. 図形を描く
  3. テクスチャを描く
  4. テキストを描く
  5. 文字列と数値の変換
  6. キーボード入力
  7. マウス入力
  8. サウンドの再生
  9. MIDI の再生
  10. ウィンドウと背景
  11. 図形のあたり判定
  12. 乱数
  13. ダイアログ
  14. ドラッグ & ドロップ
  15. アプリの状態
  16. テキストファイル
  17. INI, CSV, JSON
  18. バイナリファイル
  19. GUI
  20. アセット管理
  21. 画像編集
  22. Web カメラ
  23. マイク入力
  24. 経過時間の測定
  25. HSV カラー
  26. ファイルダウンロード
  27. 3D 描画
  28. 2D のレンダーステート
  29. 3D のレンダーステート
  30. パーティクル
  31. スクリーンショット
  32. アプリケーションの公開
  33. さらに学ぶには

表現テクニック集

入出力デバイス

開発のヒント

Clone this wiki locally