エラーテキストとして出力するオプションのストリーム引数を取る必要があるこの関数があります。
void showUsage(std::wstringstream oErrortext, bool bExit, int nExitCode)
{
if(oErrortext.rdbuf()->in_avail() > 0)
std::wcerr << oErrortext << std::endl;
std::wcout << gUsage << std::endl;
if(bExit == true)
exit(nExitCode);
}
これを単一の引数で呼び出そうとすると、正常に動作します。
showUsage(std::wstringstream(L"Multiple filenames for target found"), true, 10);
しかし、stringstream を使用したかった理由は、静的な文字列だけでなく、generaetd 文字列を構築できるようにするためです。
例:
showUsage(std::wstringstream(L"Number format for offset missing -") << oParam->mOption, true, 10);
しかし、これでコンパイルエラーが発生します。
- この一時オブジェクトを作成し、パラメーターを 1 行でストリーミングするにはどうすればよいですか (または、最初に作成する必要があるので、1 行では不可能です)。
- 私がここでやろうとしていることに対するより良い解決策はありますか (可変引数をいじらないでください)?