Bij het lezen / proberen van een recent antwoord, was ik verrast om te zien dat de String
-klasse van Arduino de c_str ()
-methode ondersteunt, net als de klasse C ++ std :: string
. Zoals verwacht, lijkt het een pointer naar de inhoud van de string te krijgen als een char
-array met null-beëindigd (dwz string in C-stijl).
Echter, (voor zover ik kan zie) die methode wordt niet genoemd in de officiële Arduino-documentatie. Bovendien lijkt in alle voorbeeldcode die ik heb gezien met String
een andere benadering te worden gebruikt. Er wordt een secundaire char
-buffer ingesteld en vervolgens wordt de inhoud van de tekenreeks ernaar gekopieerd met String :: toCharArray ()
. Dit vereist uiteraard het dubbele geheugen, plus een O (n) kopieerbewerking.
Het lijkt erop dat c_str ()
de voorkeur zou moeten hebben. Is er een reden waarom toCharArray ()
vaker wordt gebruikt?