1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef BASE_STRINGS_STRINGPRINTF_H_ 6#define BASE_STRINGS_STRINGPRINTF_H_ 7 8#include <stdarg.h> // va_list 9 10#include <string> 11 12#include "base/base_export.h" 13#include "base/compiler_specific.h" 14 15namespace base { 16 17// Return a C++ string given printf-like input. 18BASE_EXPORT std::string StringPrintf(const char* format, ...) 19 PRINTF_FORMAT(1, 2) WARN_UNUSED_RESULT; 20// OS_ANDROID's libc does not support wchar_t, so several overloads are omitted. 21#if !defined(OS_ANDROID) 22BASE_EXPORT std::wstring StringPrintf(const wchar_t* format, ...) 23 WPRINTF_FORMAT(1, 2) WARN_UNUSED_RESULT; 24#endif 25 26// Return a C++ string given vprintf-like input. 27BASE_EXPORT std::string StringPrintV(const char* format, va_list ap) 28 PRINTF_FORMAT(1, 0) WARN_UNUSED_RESULT; 29 30// Store result into a supplied string and return it. 31BASE_EXPORT const std::string& SStringPrintf(std::string* dst, 32 const char* format, ...) 33 PRINTF_FORMAT(2, 3); 34#if !defined(OS_ANDROID) 35BASE_EXPORT const std::wstring& SStringPrintf(std::wstring* dst, 36 const wchar_t* format, ...) 37 WPRINTF_FORMAT(2, 3); 38#endif 39 40// Append result to a supplied string. 41BASE_EXPORT void StringAppendF(std::string* dst, const char* format, ...) 42 PRINTF_FORMAT(2, 3); 43#if !defined(OS_ANDROID) 44// TODO(evanm): this is only used in a few places in the code; 45// replace with string16 version. 46BASE_EXPORT void StringAppendF(std::wstring* dst, const wchar_t* format, ...) 47 WPRINTF_FORMAT(2, 3); 48#endif 49 50// Lower-level routine that takes a va_list and appends to a specified 51// string. All other routines are just convenience wrappers around it. 52BASE_EXPORT void StringAppendV(std::string* dst, const char* format, va_list ap) 53 PRINTF_FORMAT(2, 0); 54#if !defined(OS_ANDROID) 55BASE_EXPORT void StringAppendV(std::wstring* dst, 56 const wchar_t* format, va_list ap) 57 WPRINTF_FORMAT(2, 0); 58#endif 59 60} // namespace base 61 62#endif // BASE_STRINGS_STRINGPRINTF_H_ 63