Core/String: Add Format static method
This commit is contained in:
parent
997a874c0e
commit
7de3c4905f
|
|
@ -11,6 +11,7 @@
|
|||
#include <Nazara/Core/Endianness.hpp>
|
||||
#include <Nazara/Core/SerializationContext.hpp>
|
||||
#include <atomic>
|
||||
#include <cstdarg>
|
||||
#include <iosfwd>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
|
@ -239,6 +240,8 @@ namespace Nz
|
|||
|
||||
static String Boolean(bool boolean);
|
||||
static int Compare(const String& first, const String& second);
|
||||
static inline String Format(const char* format, ...);
|
||||
static String FormatVA(const char* format, va_list arg);
|
||||
static String Number(float number);
|
||||
static String Number(double number);
|
||||
static String Number(long double number);
|
||||
|
|
|
|||
|
|
@ -19,6 +19,23 @@ namespace Nz
|
|||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Build a string using a format and returns it
|
||||
* \return Formatted string
|
||||
*
|
||||
* \param format String format
|
||||
* \param ... Format arguments
|
||||
*/
|
||||
String String::Format(const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
String result = FormatVA(format, args);
|
||||
va_end(args);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Releases the content to the string
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -5079,7 +5079,7 @@ namespace Nz
|
|||
* \return The expected result
|
||||
*
|
||||
* \param first First string to use for comparison
|
||||
* \parma second Second string to use for comparison
|
||||
* \param second Second string to use for comparison
|
||||
*/
|
||||
|
||||
int String::Compare(const String& first, const String& second)
|
||||
|
|
@ -5093,6 +5093,23 @@ namespace Nz
|
|||
return std::strcmp(first.GetConstBuffer(), second.GetConstBuffer());
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Build a string using a format and returns it
|
||||
* \return Formatted string
|
||||
*
|
||||
* \param format String format
|
||||
* \param args Format arguments
|
||||
*/
|
||||
String String::FormatVA(const char* format, va_list args)
|
||||
{
|
||||
std::size_t length = std::vsnprintf(nullptr, 0, format, args);
|
||||
|
||||
auto str = std::make_shared<SharedString>(length);
|
||||
std::vsnprintf(str->string.get(), length + 1, format, args);
|
||||
|
||||
return String(std::move(str));
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Converts the number to string
|
||||
* \return String representation of the number
|
||||
|
|
|
|||
Loading…
Reference in New Issue