Я хочу объединить char [] с uint32_t, чтобы получить другой char [] в результате:
char word[] = "hi";
uint32_t = 33;
char result[] = "hi33"; //How can I get this ???
Цель состоит в том, чтобы собрать некоторые данные, которые могут быть переданы WriteData
описанный метод Вот со следующей подписью …
bool WriteData(char *buffer, unsigned int nbChar);
Для записи в последовательный порт Arduino с использованием этой библиотеки вы должны сделать это:
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 возвращает длину буфера, который вы хотите записать, вы можете использовать это как параметр функции WriteData.
Вы бы сделали:
std::string word = "hi";
uint32_t num = 33;
std::string result = word + std::to_string(num);
(без std::
если у вас есть using namespace std
)
В идеале вы бы не использовали char[]
потому что нет причин.
При необходимости string
может быть построен из char[]
char word[] = "hi";
std::string result {word};
Удаление const
классификатор может быть опасным, но если такой метод, как WriteData
известно, что он безопасен (то есть не изменяет содержимое своего параметра), тогда его можно вызвать так
WriteData(const_cast<char *>(result.c_str()), result.length());
В этом случае вы можете использовать std :: string, но когда вы используете char [], вы можете использовать:
sprintf( result, "%s%u", word, num );
В случае использования строки у вас есть несколько способов:
Первый способ:
auto result = word + std::to_string(num);
Вторым способом может быть использование stringstream:
ostringstream oss;
oss << word << num;
и результат может быть:
oss.str();
использование std::ostringstream
:
static const char word[] = "Elephant";
std::ostringstream stream;
stream << word << 33;
std::string text;
text = stream.str();
Одна из альтернатив:
std::string word = "hi";
std::uint32_t num = 33;
auto result = word + std::to_string(num);