前の投稿者が述べたように、stringstreams を使用して int を文字列に、またはその逆に変換できますが、C++11 には、これを行う必要をなくす新しい機能がいくつかあります。std::to_string または std::to_wstring を使用して int を文字列または wstring に変換し、c_str() を使用して文字列オブジェクトから生の char* または wchar_t* を取得できます。適切なタイプのポインターを winapi 文字列に変換できるはずですが、一部はコンパイラーの設定に依存する場合があります。
参考までに、winapi 文字列の意味は次のとおりです。
LPSTR = char*
LPCSTR = const char*
LPWSTR = wchar_t*
LPCWSTR = const wchar_t*
LPTSTR = char* or wchar_t* depending on _UNICODE
LPCTSTR = const char* or const wchar_t* depending on _UNICODE
そして、これを C++ 文字列に割り当てる方法の簡単なサンプルを次に示します。
#include <iostream>
#include <string>
#include <Windows.h>
#include <tchar.h>
int main()
{
// Declare winapi strings
LPSTR str_charPtr;
LPCSTR str_constCharPtr;
LPWSTR str_wcharPtr;
LPCWSTR str_constWcharPtr;
LPTSTR str_tcharPtr;
LPCTSTR str_constTcharPtr;
// Declare a test integer
int num = 5001;
// Convert the integer to a string and to a wstring
std::string regString = std::to_string(num);
std::wstring wideString = std::to_wstring(num);
// Attempt to assign the winapi strings to the C++ standard strings
str_charPtr = const_cast<char*>(regString.c_str()); // NOTE: removing const to store in non-const LPSTR
str_constCharPtr = regString.c_str();
str_wcharPtr = const_cast<wchar_t*>(wideString.c_str()); // NOTE: removing const to store in non-cost LPWSTR
str_constWcharPtr = wideString.c_str();
str_tcharPtr = const_cast<TCHAR*>(regString.c_str()); // Error if set to Unicode
str_tcharPtr = const_cast<TCHAR*>(wideString.c_str()); // Error if NOT set to Unicode
str_constTcharPtr = regString.c_str(); // Error if set to Unicode
str_constTcharPtr = wideString.c_str(); // Error if NOT set to Unicde
return 0;
}
Visual Studio 2012 に移行した場合は、次のように設定を調整できます
。 1. ソリューション エクスプローラーでプロジェクトを右クリックします。
2. [プロパティ] をクリックします。
3. 左ペインの [構成プロパティ] の下で、[全般] を選択します
。 4. 右ペインで、[プロジェクトのデフォルト] セクションを確認します。
5. Character Set の横で、Unicode または適切なオプションを選択します。