0

Visual Studio C ++6.0用のC++でこのコードブロックを最適化するのを手伝ってもらえますか?

char output[10000] = "";
for (int i = 0; i < cnt; i++) {
    char row[150];
    _snprintf(row, 149, "…", …);
    row[149] = '\0';
    strcat(output, row);
}
return _snprintf(buffer, size-1, "%s\r\nend\r\n", output);

必要なのは、output []のサイズを指定せず、動的に増やすことです。row[]についても同じことが言えます。申し訳ありませんが、C++の初心者です。

助けてくれてありがとう。

4

4 に答える 4

6

C++ では、配列std::stringの代わりに文字列を使用し、そのいとこを文字列バッファーの書式設定またはの代わりに使用する必要があります。C++ ソリューションの基本は次のとおりです。charstd::stringstreamstd::istringstreamstd::ostringstreamsprintf()snprintf()

std::ostringstream result;
for (int i = 0; i < cnt; ++i) {
    result << "...\n";
}
result << "end\n";
return result.str();

このstd::stringクラスは、メモリ管理のすべての詳細を処理し、内部でstd::stringstream使用します。std::string

于 2012-09-06T21:29:28.400 に答える
3

std::stringstreamoperator <<チャームのような作品と相まって。

于 2012-09-06T21:25:42.343 に答える
0

を使用している場合、クラスMFCを使用すると非常に簡単です。CString

// loop count
int nCount = 100;
CString strOutput, strOne;
for (int i=0 ; i<nCount ; i++)
{   // format one line
    strOne.Format(_T("..."), ...);
    // accumulate the result
    strOutput += strOne;
}
return strOutput;
于 2012-09-07T00:46:49.847 に答える