max_size() を超えたときに std::string がメモリ不足になるのを避けたいため、C++ の「char *」に一定量のデータを格納する必要があります。しかし、データはネットワークからのデータ ブロックで受信されるため、データ ブロックを取得するたびに再割り当てを使用する必要があります。C++ での char * 再割り当てと連結のためのエレガントなソリューションはありますか?
3 に答える
3
Visual Studioでは、max_size()は4294967294文字で、約4Gbです。この数の文字を超えるリスクをどのように実行するかを教えていただければ興味深いと思います。
問題が頻繁に発生せず、これがフェイルセーフにすることだけである場合は、
myConcatStr(string str1, string str2)
{
if (str1.length() + str2.length()) <= str1.max_size() // if there is no overflow problem
str1.append(str2); // use stl append
else
//use alternate method instead or throw an exception
}
于 2010-04-29T08:19:50.407 に答える
1
std:vector は、文字列のサイズが大きくなるにつれて自動割り当てのために頭に浮かびます。aVector<char>
および push_back() 文字を心ゆくまで割り当てるだけです。
于 2010-04-29T04:35:02.397 に答える