こなです。

ん?
  char *p2 = strdup(strTmp.c_str());
はコードとしては正しいですが元の目的は達成できているのでしょうか?
あくまで複製へのポインタなんで、p2に対して何を行っても元のstrTmpは
変更されません。

-- 
こな <k...@yahoo.co.jp>