Archief - [PROG]C++ non-const wchar_t* uit een wstring (wcstok_s)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

blaatschaap

Legacy Member
Code:
COLORREF ParseRGBString(tstring rgbvalues)
{
	int r,g,b;
	tstringstream valueBuffer;
	wchar_t* pNextToken;

	valueBuffer << wcstok_s([b]rgbvalues.c_str()[/b],TEXT(","),&pNextToken);
	valueBuffer >> r;
	valueBuffer.str(TEXT(""));
	valueBuffer << wcstok_s(NULL,TEXT(","),&pNextToken);
	valueBuffer >> g;
	valueBuffer.str(TEXT(""));
	valueBuffer << wcstok_s(NULL,TEXT(","),&pNextToken);
	valueBuffer >> b;
	valueBuffer.str(TEXT(""));

	return RGB(r,g,b);
}

ik krijg hier de volgende error:
Error 1 error C2664: 'wcstok_s' : cannot convert parameter 1 from 'const wchar_t *' to 'wchar_t *'

ok, die geeft en const wchar_t* terug en de functie verwacht een non-const
hoe kan ik dit oplossen? heb al vanalles geprobeerd, gegoogled maar vind het echt niet :)

ik kan het ook manueel doen maar wil wel graag weten hoe dit opgelost wordt :)

blaatschaap

Legacy Member
heb het ondertussen kunnen fixen met strcopy :)

Code:
COLORREF SpriteSheetScript::ParseRGBString(tstring rgbvalues)
{
	int rgb[3] = {0,0,0};
	int index = 0;
	tstringstream valueBuffer;
	tchar* pNextToken;
	tchar* str = new tchar[rgbvalues.size()+1];

	tcscpy(str, rgbvalues.size()+1, rgbvalues.c_str());

	valueBuffer << tcstok(str,TEXT(", "),&pNextToken);
	valueBuffer >> rgb[index++];

	while (*pNextToken != NULL)
	{
		valueBuffer.str(TEXT(""));
		valueBuffer.clear();
		valueBuffer << tcstok(NULL,TEXT(", "),&pNextToken);
		valueBuffer >> rgb[index++];
	}
	
	delete []str;

	for (int i=0;i<3;++i)
	{
		if (rgb[i]<0) rgb[i]=0;
		if (rgb[i]>255) rgb[i]=255;
	}

	return RGB(rgb[0],rgb[1],rgb[2]);
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan