source: trunk/FACT++/src/tools.cc@ 10364

Last change on this file since 10364 was 10338, checked in by tbretz, 14 years ago
Added Trim function.
File size: 1.6 KB
Line 
1// **************************************************************************
2/** @file tools.cc
3
4@todo
5 - Resolve the dependancies with dim
6 - Move code to a more appropriate place
7 - put stuff in namespaces
8*/
9// **************************************************************************
10#include "tools.h"
11
12#include <stdarg.h>
13
14using namespace std;
15
16string Format(const char *fmt, va_list &ap)
17{
18 int n=256;
19
20 char *ret=0;
21 while (1)
22 {
23 ret = new char[n+1];
24
25 const int sz = vsnprintf(ret, n, fmt, ap);
26 if (sz<=n)
27 break;
28
29 n *= 2;
30 delete [] ret;
31 };
32
33 string str(ret);
34
35 delete [] ret;
36
37 return str;
38}
39
40string Form(const char *fmt, ...)
41{
42 va_list ap;
43 va_start(ap, fmt);
44
45 string str = Format(fmt, ap);
46
47 va_end(ap);
48
49 return str;
50}
51
52// --------------------------------------------------------------------------
53//
54//! This is a static helper to remove leading and trailing whitespaces.
55//!
56//! @param buf
57//! a pointer to the char array from which the whitespaces should be
58//! removed
59//!
60//! @returns
61//! a std::string with the whitespaces removed from buf
62//
63string Trim(const string &str)
64{
65 // Trim Both leading and trailing spaces
66 const size_t start = str.find_first_not_of(' '); // Find the first character position after excluding leading blank spaces
67 const size_t end = str.find_last_not_of(' '); // Find the first character position from reverse af
68
69 // if all spaces or empty return an empty string
70 if (string::npos==start || string::npos==end)
71 return string();
72
73 return str.substr(start, end-start+1);
74}
Note: See TracBrowser for help on using the repository browser.