webForumDet fria alternativet
Logga in / Bli medlem

ännu mera string. :)

C/C++

6 svar · 232 visningar · startad av Nexus86

Medlem sedan okt. 20023 030 inlägg
Frågan#1

Hur gör man för att göra om en siffra till string. T.ex. om jag har en int, i, som innehåller 3 och så har jag en string, s, som jag vill få att innehålla en etta, hur gör jag? Jag kan ju inte ta (string)i för då blir det ett tecken med 3 i ASCII-tabellen. Eller har jag fått det helt om bakfoten?

Medlem sedan okt. 20023 030 inlägg
#2

Absolut ingen som vet? Om jag säger såhär, hur MessageBox:ar man en int?

Medlem sedan aug. 2001458 inlägg
#3

Att ingen svarat inom 17 minuter betyder inte att ingen vet. Försök ha lite tålamod ;)

Medlem sedan okt. 20023 030 inlägg
#4

Jaja men det är så att jag behöver veta för jag håller på med en sak. :) Det känns längre när man väntar.

Medlem sedan aug. 2001458 inlägg
#5

Jag förstår att du är ivrig att lära dig :), men försök hålla dig. Det anses fult att "bumpa" inlägg och man får acceptera att svaret kan dröja ibland.

Till saken. Det finns flera sätt att göra det du frågar efter, tre exempel nedan. Jag tycker det med stringstream är det överlägset bästa.

#include <windows.h>
#include <sstream>

void main()
{
	{
		char buf[256];
		int i = 123;
		sprintf(buf, "i är %d (hex:0x%x)", i, i);
		MessageBox(GetDesktopWindow(), buf, "Test av sprintf", MB_OK);
	}

	{
		char buf[256] = "i är";
		int i = 123;
		_itoa(i, buf + strlen(buf), 10);
		strcat(buf, " (hex:0x");
		_itoa(i, buf + strlen(buf), 16);
		strcat(buf, ")");
		MessageBox(GetDesktopWindow(), buf, "Test av _itoa och strcat", MB_OK);
	}

	{
		std::stringstream message;
		int i = 123;
		message << "i är" << i << " (hex:0x" << std::hex << i << ')';
		MessageBox(GetDesktopWindow(), message.str().c_str(), "Test av stringstream", MB_OK);
	}
}
Medlem sedan okt. 20023 030 inlägg
#6

Okej.. Tack! Den ser bäst ut. Eller iallafall lättast. :)

Medlem sedan maj 200221 inlägg
#7

int MessageBoxf(HWND _hWindow, const char *_pTopic, int _Buttons, const char *_pFormat, ...)
{
char Buffer[4092];
va_list List;
va_start(List, Format);
vsprintf(Buffer, Format, List);
va_end(List);
MessgeBox(hWindow, Buffer, _pTopic, _Buttons);
}

Något sånt borde funka... ej testat dock..

247 ms totalt · 4 externa anrop · v20260731065814-full.07527b5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)