読者です 読者をやめる 読者になる 読者になる

Play Siv3D!

ゲームとメディアアートのための C++ ライブラリ「Siv3D」

文字列

文字列

Siv3D June 2015 v2

文字列を作成する

#include <Siv3D.hpp>

void Main()
{
	const String s1 = L"Siv3D";

	Println(s1);

	const String s2(10, L'a');

	Println(s2);

	WaitKey();
}


文字を終端に追加する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Siv3D";

	s.push_back(L'!');

	Println(s);

	WaitKey();
}


文字列を終端に追加する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Programming";

	s += L" C++";

	Println(s);

	WaitKey();
}


文字にアクセスする

#include <Siv3D.hpp>

void Main()
{
	String s = L"Siv3D";

	for (size_t i = 0; i < s.length; ++i)
	{
		Println(s[i]);
	}

	Println(L"---");

	for (const auto& ch : s)
	{
		Println(ch);
	}

	WaitKey();
}


指定した位置に文字列を挿入する

#include <Siv3D.hpp>

void Main()
{
	String s = L"S3D";

	s.insert(1, L"iv");

	Println(s);

	WaitKey();
}


指定した範囲の文字列を削除する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Siv3D";

	s.erase(1, 2);

	Println(s);

	WaitKey();
}


文字列を消去する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Siv3D";

	s.clear();

	Println(s);

	WaitKey();
}


末尾の文字を削除する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Siv3D";

	s.pop_back();

	Println(s);

	WaitKey();
}


C スタイル文字列の先頭のポインタを取得する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Siv3D";

	const wchar* p = s.c_str();

	Println(p);

	WaitKey();
}


文字列の長さを調べる

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Siv3D";

	Println(s.length);

	Println(String(L"C++").length);

	WaitKey();
}


空の文字列であるかを調べる

#include <Siv3D.hpp>

void Main()
{
	String s1 = L"Siv3D";

	String s2;

	Println(s1.isEmpty);

	Println(s2.isEmpty);

	WaitKey();
}


文字列用のメモリを指定したサイズで確保する

#include <Siv3D.hpp>

void Main()
{
	String s;

	s.reserve(100);

	for (int i = 0; i < 100; ++i)
	{
		s.push_back(Random(L'a', L'z'));
	}

	Println(s);

	WaitKey();
}


文字列のサイズを変更する

#include <Siv3D.hpp>

void Main()
{
	String s = L"Programming C++";

	s.resize(7);

	Println(s);

	WaitKey();
}


指定した範囲の文字列を取得する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.substr(12));

	Println(s.substr(0, 3));

	WaitKey();
}


文字列を検索する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.indexOf(L"C++"));

	Println(s.indexOf(L"C#") == String::npos);

	WaitKey();
}


文字列を比較する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s == L"Programming C++");

	WaitKey();
}


マルチバイト文字列に変換する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	const std::string m = s.narrow();
}


指定した長さになるよう文字を追加する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Siv3D";

	Println(s.padLeft(8, L'-'));

	Println(s.padRight(8, L'-'));

	WaitKey();
}


空白と制御文字を除去する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"  Siv3D  ";

	Println(s, L'.');

	Println(s.trimLeft(), L'.');

	Println(s.trimRight(), L'.');

	Println(s.trim(), L'.');

	WaitKey();
}


文字列を反転する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Siv3D";

	Println(s.reverse());

	WaitKey();
}


大文字と小文字を変換する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Siv3D";

	Println(s.upper());

	Println(s.lower());

	Println(s.swapCase());

	WaitKey();
}


XML エスケープする

#include <Siv3D.hpp>

void Main()
{
	const String s = L"<html>";

	Println(s.xmlEscape());

	WaitKey();
}


1 行の文字数を制限する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.layout(4));

	WaitKey();
}


タブ文字を半角空白に置換する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"\tSiv3D";

	Println(s);

	Println(s.length);

	Println(s.expandTabs(4));

	Println(s.expandTabs(4).length);

	WaitKey();
}


指定した文字列の個数を数える

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.count(L'P'));

	Println(s.count(L'm'));

	Println(s.count_if(IsUpper));

	Println(s.count_if([](wchar ch){ return L'a' <= ch && ch <= L'i'; }));

	WaitKey();
}


指定した文字列が含まれているかを調べる

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.includes(L'A'));

	Println(s.includes(L"++"));

	Println(s.includes_if(IsUpper));

	Println(s.includes_if([](wchar ch){ return L'A' <= ch && ch <= L'C'; }));

	WaitKey();
}


指定した文字列から始まるかを調べる

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.startsWith(L'A'));

	Println(s.startsWith(L'P'));

	Println(s.startsWith(L"Prog"));

	Println(s.startsWith(L"Pra"));

	WaitKey();
}


指定した文字列で終わるかを調べる

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.endsWith(L'g'));

	Println(s.endsWith(L'+'));

	Println(s.endsWith(L"++"));

	Println(s.endsWith(L"+++"));

	WaitKey();
}


文字列を置換する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.replace(L'+', L'-'));

	Println(s.replace(L"Programming", L"Learning"));

	WaitKey();
}


指定した文字列を除去する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"Programming C++";

	Println(s.remove(L'+'));

	Println(s.remove(L"Programming"));

	Println(s.remove_if(IsLower));

	WaitKey();
}


指定した区切り文字で文字列を分割する

#include <Siv3D.hpp>

void Main()
{
	const String s = L"10, 20, 30, 40, 50";

	for (const auto& elem : s.split(L','))
	{
		Println(elem.trim());
	}

	WaitKey();
}