Main MRPT website > C++ reference for MRPT 1.9.9
format.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "core-precomp.h" // Precompiled headers
11 
12 #include <mrpt/core/format.h>
13 #include <cstdarg>
14 
15 // A sprintf-like function for std::string
16 std::string mrpt::format(const char* fmt, ...)
17 {
18  if (!fmt) return std::string();
19 
20  int result = -1, length = 2048;
22  while (result == -1)
23  {
24  buffer.resize(length);
25 
26  va_list args; // This must be done WITHIN the loop
27  va_start(args, fmt);
28 #if defined(_MSC_VER)
29  result = ::vsnprintf_s(&buffer[0], length, _TRUNCATE, fmt, args);
30 #else
31  result = ::vsnprintf(&buffer[0], length, fmt, args);
32 #endif
33  va_end(args);
34 
35  // Truncated?
36  if (result >= length) result = -1;
37  length *= 2;
38 
39  // Ok?
40  if (result >= 0)
41  {
42  buffer.resize(result);
43  }
44  }
45  return buffer;
46 }
format.h
core-precomp.h
length
GLuint GLsizei GLsizei * length
Definition: glext.h:4064
mrpt::format
std::string format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
Definition: format.cpp:16
buffer
GLuint buffer
Definition: glext.h:3917
vsnprintf
#define vsnprintf
Definition: zutil.h:203
string
GLsizei const GLchar ** string
Definition: glext.h:4101



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST