String Char Data

Some examples of conversions between strings, char arrays and float data type.

#include <windows.h>

#include <sstream> // wstringstream wstring

void convertWStringToCharPtr(_In_ std::wstring input, _Out_ char * & outputString)

{

size_t outputSize = input.length() + 1; // +1 for null terminator 20

outputString = new char[outputSize];

size_t charsConverted = 0;

const wchar_t * inputW = input.c_str();

LPCWCHAR inputW2 = input.c_str();

wcstombs_s(&charsConverted, outputString, outputSize, inputW2, input.length());

// TODO verify charsConverted = outputSize

}

//---------------------------------------------------------------------------

//int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE,LPSTR lpCmdLine, int nCmdShow)

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)

{

float x = 42.35f;

std::wstringstream s;

s << x << L"THis is a test" ;

std::wstring ws = s.str();//L"42.35THis is a test"

LPWSTR Caption = L"42.35THis is a test";

LPCWSTR Caption2 = L"42.35THis is a test";

LPWSTR Caption3 = const_cast<LPWSTR>(Caption2);

std::wstring ws2 = static_cast<std::wstring>(Caption);//L"42.35THis is a test"

char* outputString = NULL;

convertWStringToCharPtr(ws, outputString);

// outputString "42.35THis is a test" ws L"42.35THis is a test"

convertWStringToCharPtr(Caption, outputString);

// outputString "42.35THis is a test" Caption L"42.35THis is a test"

int a = sizeof(Caption);//4

int a2 = wcslen(Caption);//19

int b = sizeof(outputString);//4

int b2 = strlen(outputString);//19

// http://www.cplusplus.com/reference/cstdlib/strtod/

double vOut0 = strtod(outputString, NULL);//42.350000000000001

float vOut1 = (float)vOut0;//42.3499985

float vOut2 = atof(outputString);//42.3499985

//float vOut4 = _wtof(Caption);//42.3499985 It is wired, this line and the next line cannot be uncommented at the same time.

float vOut3 = _wtof(Caption3);//42.3499985

return FALSE;

}