Ik ben bezig met een programma dat meetwaarden leest uit een bestand en deze in een array stopt en daarna verwerkt. Nu zijn deze meetwaarden gegeven als kommagetallen bvb 1,33346 , maar C++ werkt met punten en wil 1.33346. Weet iemand hoe ik van de array met meetwaarden waar komma's instaan (in plaats van punten) een nieuwe array kan maken met punten erin, zodat C++ er mee kan werken?
Verwijderd
Als je de meetwaarden als string in de array gooit, dan kun je daarvoor nog even de komma vervangen door de punt met de welbekende functie
Natuurlijk is het ook mogelijk de meetwaarden eerst op te slaan en daarna de komma's om te zetten in punten.
De opgeslagen waardes hebben een seperating aanduiding. Komma of punt hangt af van je eigen landinstellingen in windows.
Je kunt dit zelf wel instellen in je source zelf. Je kan specificeren welke NumberFormat gebruikt word.
Je kunt dit zelf wel instellen in je source zelf. Je kan specificeren welke NumberFormat gebruikt word.
Verwijderd
Het fraaiste is om met SetLocal naar de NL instellingen te schakelen, waarden in te lezen, te converteren en weer teruggeschakelen.
Tweede (iets minder fraai, maar effectief)
Tweede (iets minder fraai, maar effectief)
C++:
1
2
3
4
5
| while (*waarde_string) if (*(waardestring + i) == ',') *(waardestring + i) == '.'; waarde = atof (waardestring); |
[ Voor 7% gewijzigd door drm op 22-06-2004 12:51 ]
Verwijderd
arghh 
C++:
1
2
3
4
5
6
7
| while (*(waarde_string + i)) { if ... .... i++; } |
[ Voor 70% gewijzigd door drm op 22-06-2004 12:52 ]
Er is geen SetLocal functie in standaard C++.
Wat er wel is is std::numpunct<char>::decimal_point
Wat er wel is is std::numpunct<char>::decimal_point
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
Pagina: 1