On Tue, 5 Feb 2002, Karl B Buchner wrote:
> I was looking through some C++ documentation, and I noticed the
> ostrstream class (heretofor unbeknownst to me).
strstring is deprecated. Its replacement within the IOStreams framework
is stringstream. A standard example would be:
#include <iostream>
#include <sstream> // stringstream lives here
int
main ()
{
std::stringstream ss;
std::string str;
double d = 3.1415;
ss << d;
ss >> str;
std::cout << "As a double: " << d << '\n'
<< "As a string: " << str << std::endl;
}
> -no need for messy %-5ld type stuff
>
The equivalent in Standard C++ isn't necessarily cleaner:
oss << std::left << std::setw(5) << foobar;
> one disadvantage that I noticed was cases where you want to set the
> size of the parameter (i.e. %20s).
You probably meant "%.20s", which sets the string's "precision" (length),
not "%20s", which right-justifies it in a field of 20 spaces. Note that
these are quite different, as "%20s" will still print all of a string,
regardless of its length. "%.20s" performs the intended truncation.
For C++, you might consider migrating to std::string, in which case you
can handle this explicitly with the substr() member, like:
std::string str = ...; // Set to some string.
oss << str.substr(0, 20); // first 20 characters only.
-dak
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT