【初心者歓迎】C/C++室 Ver.57【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0484デフォルトの名無しさん
2008/07/29(火) 00:56:44{
static std::string str = boost::lexical_cast<std::string>(n);
return str;
}
const std::string g_strNotFound("NotFound");
const std::string& GeRefOfFuncStaticString2(int n)
{
static std::map<int,std::string> mapStr;
if( mapStr.empty() )
{
mapStr.insert( std::make_pair(100, "100") );
mapStr.insert( std::make_pair(101, "101") );
}
std::map<int,std::string>::const_iterator itrFound = mapStr.find(n);
return itrFound != mapStr.end() ? itrFound->second : g_strNotFound;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << GeRefOfFuncStaticString( 100 ) << std::endl; // 表示: 100
std::cout << GeRefOfFuncStaticString( 101 ) << std::endl; // 表示: 100 ← 関数内の static 変数の参照を取り出せない
std::cout << GeRefOfFuncStaticString2( 100 ) << std::endl; // 表示: 100
std::cout << GeRefOfFuncStaticString2( 101 ) << std::endl; // 表示: 101
return 0;
}
map を使った場合の GeRefOfFuncStaticString2( ) は意図した動作になるんですが,たまたまでしょうか?
■ このスレッドは過去ログ倉庫に格納されています