string mail::address::toString(string hdr, const vector<T> &h, size_t w) { int len=hdr.length(); string comma=""; bool first=true; string spc=""; spc.insert(spc.end(), len < 20 ? len:20, ' '); // Leading whitespace for folded lines. typename std::vector<T>::const_iterator b=h.begin(), e=h.end(); while (b != e) { string s= b->toString(); if (!first && len + comma.length() + s.length() > w) { // Line too long, wrap it. if (comma.size() > 0) comma=","; hdr=hdr + comma + "\n" + spc; len=spc.size(); comma=""; } first=false; hdr = hdr + comma + s; len += comma.length() + s.length(); comma=", "; if (b->addr.length() == 0) comma=""; b++; } return hdr; }