.NET Framewrkで文字列置換

ずっと画像処理系の開発に携わってきたのでスピード命なC/C++とか、SSEアセンブラとかばかりを扱ってきたのです。なのでマネージドコードとか.NET Frameworkとかあまり縁がなくて、今さらながらお勉強中。
テキストファイルの文字列置換のコードを書いてみましたが、これは楽チンでいいですなあ。

// data=%{date}, time=%{time}

#include "stdafx.h"

using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Text::RegularExpressions;

// 文字列置換の実験
// inからregexを探してdataに置き換える。regexは正規表現。
String^ replace(String^ in, String^ regex, String^ data)
{
  String ^out;
  Regex^ rx = gcnew Regex(regex);
  out = rx->Replace(in, data);

  return out;
}

int main(array<System::String ^> ^args)
{
  StreamReader ^sr = gcnew StreamReader(args[0], System::Text::Encoding::GetEncoding("shift_jis"));
  String^ org = sr->ReadToEnd(), ^tmp, ^after; // args[0]ファイルを一気に読み込む

  tmp = replace(org, "%{date}", "2012/02/24");
  after = replace(tmp, "%{time}", "21:10:05.545");

  StreamWriter^ sw = gcnew StreamWriter(args[1], false, System::Text::Encoding::GetEncoding("shift_jis"));
  sw->Write(after); // 文字列置換結果をargs[1]に保存
  sw->Close();

  return 0;
}
// data=%{date}, time=%{time}