2017-03-07 1 views
1

Ich möchte ein char [] mit einem uint32_t verketten andere Zeichen erhalten [] als Ergebnis:Concatenate char [] und uint32_t in C++

char word[] = "hi"; 
uint32_t = 33; 

char result[] = "hi33"; //How can I get this ??? 

Ziel einige Daten zu montieren ist, die übergeben werden kann ein WriteDatahere beschriebene Verfahren mit der folgenden Signatur ...

bool WriteData(char *buffer, unsigned int nbChar); 
+3

Verwenden Sie 'std :: stringstream'. Verwenden Sie keine Zeichen-Arrays. –

+0

'uint32_t = 33;' ist ein Syntaxfehler –

+0

Wenn Sie ein 'char []' verwenden müssen, benötigen Sie ['sprintf'] (http://www.cplusplus.com/reference/cstdio/sprintf/) – smead

Antwort

1

Um in der seriellen Schnittstelle des Arduino schreiben diese Bibliothek verwenden Sie dies tun sollten:

int _tmain(int argc, _TCHAR* argv[]) { 
    Serial* SP = new Serial("COM3"); 
    HDC dc = GetDC(NULL); 
    char word[25]; 
    uint8_t n; 
    uint32_t r, g, b; 
    while (SP->IsConnected()) { 
     n = sprintf_s(word,"%dr%dg%db\n",r,g,b); 
     SP->WriteData(word, n-1); 
    } 
    return 0; 
} 

sprintf_s die Länge des Puffers führt zurück schreiben möchten, können yo dies als Parameter verwenden die WriteData-Funktion.

1

Verwenden std::ostringstream:

static const char word[] = "Elephant"; 
std::ostringstream stream; 
stream << word << 33; 
std::string text; 
text = stream.str(); 
4

Sie tun würde:

std::string word = "hi"; 
uint32_t num = 33; 
std::string result = word + std::to_string(num); 

(ohne std:: wenn Sie using namespace std haben)

Im Idealfall würden Sie nicht char[] verwenden, weil es keinen Grund zu ist.

Bei Bedarf kann ein string aus einem char[]

char word[] = "hi"; 
std::string result {word}; 

die const Qualifier gefährlich, aber wenn ein Verfahren sein kann aus- gebaut sein wie WriteData bekannt ist, sicher zu sein (dh, ändern nicht den Inhalt der Parameter), dann kann es wie diese

WriteData(const_cast<char *>(result.c_str()), result.length()); 
1

Eine Alternative ist, aufgerufen werden:

std::string word = "hi"; 
std::uint32_t num = 33; 

auto result = word + std::to_string(num); 
2

Sie können std :: string in diesem Fall verwenden, aber wenn Sie für char gehen [] können Sie:

sprintf(result, "%s%u", word, num); 

Im Fall der Zeichenkette verwenden Sie haben mehrere Möglichkeiten: Der erste Weg ist :

auto result = word + std::to_string(num); 

Der zweite Weg string, lassen sich mit:

ostringstream oss; 
oss << word << num; 

und Ergebnis könnte sein:

oss.str();