わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

wstring中の改行コードを変換する

std::wstring中の改行コードを好きな文字列に変換します。この関数を利用して統一されていない改行コードを1種類に統一することもできます。

変換対象の改行コード

  • "\r\n"
  • "\r"
  • "\n"
  • "\n\r"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>



/*
	改行コードを変換する(wstring)
		"¥r¥n", "¥r", "¥n", "¥n¥r"の4種類に対応しています。
*/
std::wstring ConvertCRLF
(
	  std::wstring strString		// 変換対象の文字列
	, std::wstring strCRLF		// 改行コードを変換したい文字列("¥n"など)
)
{
	std::wstring strRet;

	std::wstring::iterator ite    = strString.begin();
	std::wstring::iterator iteEnd = strString.end();

	if (0 < strString.size()) {

		wchar_t wNextChar = *ite++;

		while (1) {
			if ('¥r' == wNextChar) {

				// 改行確定
				strRet += strCRLF;

				// EOF判定
				if (ite == iteEnd) {
					break;
				}

				// 1文字取得
				wNextChar = *ite++;

				if ('¥n' == wNextChar) {

					// EOF判定
					if (ite == iteEnd) {
						break;
					}

					// 1文字取得
					wNextChar = *ite++;
				}
			}
			else if ('¥n' == wNextChar) {

				// 改行確定
				strRet += strCRLF;

				// EOF判定
				if (ite == iteEnd) {
					break;
				}

				// 1文字取得
				wNextChar = *ite++;

				if ('¥r' == wNextChar) {

					// EOF判定
					if (ite == iteEnd) {
						break;
					}

					// 1文字取得
					wNextChar = *ite++;
				}
			}
			else {

				// 改行以外
				strRet += wNextChar;

				// EOF判定
				if (ite == iteEnd) {
					break;
				}

				// 1文字取得
				wNextChar = *ite++;
			}
		};
	}
	return(strRet);
}



/*
	stringの改行コードを統一する
*/
int _tmain
(
	  int argc
	, _TCHAR* argv[]
)
{
	/*
		std::wcoutのロケールを設定
		 これを設定するだけで、std::wcoutで日本語が表示される
		 ようになります。
	*/
	std::wcout.imbue( std::locale( "", std::locale::ctype ) );

	// 変換対象の文字列
	std::wstring strText = L"1行目¥r¥n2行目¥n3行目¥n¥r4行目¥r";

	// 改行コードを変換します。
	std::wstring strResult = ConvertCRLF( strText, L"●" );

	// 変換結果を表示
	std::wcout << strResult.c_str() << std::endl;

	// 改行コードを変換します。(このようにすると改行コードを"¥n"に統一する事もできます。)
	strResult = ConvertCRLF( strText, L"¥n" );

	// 変換結果を表示
	std::wcout << strResult.c_str() << std::endl;

	// 正常終了
	return( 0 );
}

実行結果

1行目●2行目●3行目●4行目●
1行目
2行目
3行目
4行目




わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。