diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-11-08 06:56:58 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-11-08 06:56:58 +0000 |
commit | 414328563a8c3972e8d053fb770741eb0123d826 (patch) | |
tree | 5988aa86d29c9cdc848b829e67034ec151c8f5df | |
parent | ef5e980ae9ab4ddb47e79783455b78de4b90366a (diff) | |
download | libbu++-414328563a8c3972e8d053fb770741eb0123d826.tar.gz libbu++-414328563a8c3972e8d053fb770741eb0123d826.tar.bz2 libbu++-414328563a8c3972e8d053fb770741eb0123d826.tar.xz libbu++-414328563a8c3972e8d053fb770741eb0123d826.zip |
Bu::FString now has the functions format, formatAppend, and formatPrepend, all
of which use printf style formatting and accept the same parameters as printf.
Diffstat (limited to '')
-rw-r--r-- | src/fstring.h | 44 | ||||
-rw-r--r-- | src/tests/fstrformat.cpp | 12 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/fstring.h b/src/fstring.h index de34cb0..2a18362 100644 --- a/src/fstring.h +++ b/src/fstring.h | |||
@@ -681,6 +681,50 @@ namespace Bu | |||
681 | appendChunk( pNew ); | 681 | appendChunk( pNew ); |
682 | } | 682 | } |
683 | 683 | ||
684 | void format( const char *sFrmt, ...) | ||
685 | { | ||
686 | clear(); | ||
687 | |||
688 | va_list ap; | ||
689 | va_start( ap, sFrmt ); | ||
690 | |||
691 | long iLen = vsnprintf( NULL, 0, sFrmt, ap ); | ||
692 | |||
693 | Chunk *pNew = newChunk( iLen ); | ||
694 | vsnprintf( pNew->pData, iLen+1, sFrmt, ap ); | ||
695 | appendChunk( pNew ); | ||
696 | |||
697 | va_end( ap ); | ||
698 | } | ||
699 | |||
700 | void formatAppend( const char *sFrmt, ...) | ||
701 | { | ||
702 | va_list ap; | ||
703 | va_start( ap, sFrmt ); | ||
704 | |||
705 | long iLen = vsnprintf( NULL, 0, sFrmt, ap ); | ||
706 | |||
707 | Chunk *pNew = newChunk( iLen ); | ||
708 | vsnprintf( pNew->pData, iLen+1, sFrmt, ap ); | ||
709 | appendChunk( pNew ); | ||
710 | |||
711 | va_end( ap ); | ||
712 | } | ||
713 | |||
714 | void formatPrepend( const char *sFrmt, ...) | ||
715 | { | ||
716 | va_list ap; | ||
717 | va_start( ap, sFrmt ); | ||
718 | |||
719 | long iLen = vsnprintf( NULL, 0, sFrmt, ap ); | ||
720 | |||
721 | Chunk *pNew = newChunk( iLen ); | ||
722 | vsnprintf( pNew->pData, iLen+1, sFrmt, ap ); | ||
723 | prependChunk( pNew ); | ||
724 | |||
725 | va_end( ap ); | ||
726 | } | ||
727 | |||
684 | /** | 728 | /** |
685 | * Function the archiver calls to archive your FString. | 729 | * Function the archiver calls to archive your FString. |
686 | *@param ar (Archive) The archive which is archiving your FString. | 730 | *@param ar (Archive) The archive which is archiving your FString. |
diff --git a/src/tests/fstrformat.cpp b/src/tests/fstrformat.cpp new file mode 100644 index 0000000..dbf6133 --- /dev/null +++ b/src/tests/fstrformat.cpp | |||
@@ -0,0 +1,12 @@ | |||
1 | #include "bu/fstring.h" | ||
2 | #include <stdio.h> | ||
3 | |||
4 | int main() | ||
5 | { | ||
6 | Bu::FString s; | ||
7 | |||
8 | s.format("%d, %f, \'%s\'", 144, 12.5, "bob" ); | ||
9 | |||
10 | printf("test: %s\n", s.getStr() ); | ||
11 | } | ||
12 | |||