[cppll:0057] <tips>form

Subject:
[cppll:0057] <tips>form
From:
FUKUDA Fumiki <ffukuda@...>
Date:
Tue, 11 Dec 2001 18:16:58 +0900
X-Mailer:
WeMail32[1.42] ID:NTES00
Message-Id:
<200112110919.fBB9JMm4028442‐at‐tmg01.ntes.nec.co.jp>
επιστημηです。

printfの便利さから逃れられないヒトに:

#include <iostream>  // wcout, endl
#include <locale>    // locale
#include <string>    // wstring
#include <cstdarg>   // vsprintf/vswprintf

std::string form(const char* format, ...) {
 char buffer[256];
 va_list marker;
 va_start(marker,format);
 vsprintf(buffer, format, marker); // [*]
 va_end(marker);
 return buffer;
}

std::wstring form(const wchar_t* format, ...) {
 wchar_t buffer[256];
 va_list marker;
 va_start(marker,format);
 vswprintf(buffer, format, marker); // [*]
 va_end(marker);
 return buffer;
}

// [*] ホントは std::vsxxxx なんだが、VC6ではダメなのぢゃ

/*
* 使い方
*/
int main() {
 std::locale::global(std::locale("japanese"));
 std::cout  << form("hello %s\n", "world");
 std::wcout << form(L"こんにちは %s\n", L"日本");
 return 0;
}

-----:-----:-----:-----:-----:-----:-----:-----:-----:-----
FUKUDA (episteme) Fumiki -- magical, but never a magic...

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here