if broken it is, fix it you should
Als je Borland C++ Builder gebruikt, moet je eens naar IntToString() kijken.
https://fgheysels.github.io/
string test = "Barcode " + integerVariabele + " wat tussen tekst " + doubleVariabele; Hmmz dat is ook Java dus 
toString methods zijn van Java, maar die werken niet op primitives, allen op Objects
toString methods zijn van Java, maar die werken niet op primitives, allen op Objects
Wat er nu gebeurt is dat in test een pointer naar het eerste karakter van Barcode opleverd. Vervolgens tel je bij die pointer een getal op. Het is dus niet vreemd dat de pointer vervolgens niet naar het eerste, maar naar het 2e of 3e teken wijst. Je moet die integer niet er bij op tellen, maar concateneren.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
en hoe doe je dat?Op donderdag 06 juni 2002 11:27 schreef Janoz het volgende:
Wat er nu gebeurt is dat in test een pointer naar het eerste karakter van Barcode opleverd. Vervolgens tel je bij die pointer een getal op. Het is dus niet vreemd dat de pointer vervolgens niet naar het eerste, maar naar het 2e of 3e teken wijst. Je moet die integer niet er bij op tellen, maar concateneren.
if broken it is, fix it you should
sprintf(test, "%s: %d %.2f", "barcode", code, prijs);
simpel toch ?
simpel toch ?
Quadcore 6600 @ 3,3Ghz, 4 GB, 2 TB raid 5, GF 8400GS
P4 2.8G, 2 GB, 500GB diskspace, GF FX5200
pakt sprintf ook stl string objecten? Volgens mij namelijk niet, alleen maar een char pointer. Maargoed, kan je het alsnog met een extra buffer doen:Op donderdag 06 juni 2002 11:54 schreef Quorton het volgende:
sprintf(test, "%s: %d %.2f", "barcode", code, prijs);
simpel toch ?
code:
1
2
3
| char Buffer[100]; sprintf( Buffer, "%s: %d %.2f", "Barcode", code, prijs); string test = Buffer; |
Als het perse in een string object moet..
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
code:
1
2
3
4
5
6
7
| std::stringstream oss
oss << std::string("text")
<< int(1)
<< float(2.5)
<< std::endl;
std::cout << oss.str(); |
PS. types zijn nu expliciet maar dat hoeft dus niet
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
En toch is C++ een mooi taaltjeMSalters:
code:
1 2 3 4 5 6 7std::stringstream oss oss << std::string("text") << int(1) << float(2.5) << std::endl; std::cout << oss.str();
PS. types zijn nu expliciet maar dat hoeft dus niet
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
DeOp donderdag 06 juni 2002 12:30 schreef MSalters het volgende:
code:
1 2 3 4 5 6 7std::stringstream oss oss << std::string("text") << int(1) << float(2.5) << std::endl; std::cout << oss.str();
PS. types zijn nu expliciet maar dat hoeft dus niet
code:
1
| std::endl |
zou ik niet doen. Waarom een newline in deze stringstream plaatsen? (een einde string ofzo is ook niet nodig; gaat automatisch, wat nou juist de grap van stringstreams is).
Vergeet ook niet #include <sstream>.
[edit] Zonder endl; in de stringstream, moet er natuurlijk wel een als je naar stdout gaat printen, dus
code:
1
| std::cout << oss.str(); |
wordt
code:
1
| std::cout << oss.str() << endl; |
Pagina: 1