
There is currently a static-sized array in the Boost library that allows you to operate on arrays of fixed size. I was wondering if something similar exists for strings, in particular, providing buffer-overflow safe string operations. I have an nstring< std::size_t n > string class that provides size-safe copying and comparison, allowing for you to do things like: nstring< 20 > s; s.copy( "Hello World!" ) if( s == "Hello" ) ... // note: this will succeed! This is useful for things like processing file format headers, as it allows things like: struct tar_header { nstring< 100 > name; ... nstring< 8 > magic; ... }; if( hdr.magic == "ustar\x20\x20\0" ) // GNU TAR archive ... else if( hdr.magic == "ustar\0" ) // POSIX TAR archive ... else // invalid format I also have a formatter class that provides buffer-safe printf-like operations on the constructor and as a functor, e.g.: formatter< 512 > fmt( "%s: %s", type, msg ); std::cout << fmt << '\n'; std::cout << fmt( "error: %s", msg ) << '\n'; This can be useful when you need to format a string without making use of a string buffer, e.g.: std::ostringstream fmt; fmt << type << ": " << msg; std::cout << fmt.str() << '\n'; fmt.str( std::string()); // clear string buffer fmt << "error: " << msg; std::cout << fmt.str() << '\n'; Regards, Reece _________________________________________________________________ Tired of 56k? Get a FREE BT Broadband connection http://www.msn.co.uk/specials/btbroadband

Reece Dunn wrote:
There is currently a static-sized array in the Boost library that allows you to operate on arrays of fixed size. I was wondering if something similar exists for strings, in particular, providing buffer-overflow safe string operations.
I have an nstring< std::size_t n > string class that provides size-safe copying and comparison, allowing for you to do things like:
[]
I also have a formatter class that provides buffer-safe printf-like operations on the constructor and as a functor, e.g.:
[] Could you provide a link to the sources? -- Maxim Yegorushkin
participants (2)
-
Maxim Yegorushkin
-
Reece Dunn