在 C++ 中连接 char[] 和 uint32_t
Concatenate char[] and uint32_t in C++
我想连接一个 char[] 和一个 uint32_t 以获得另一个 char[] 作为结果:
char word[] = "hi";
uint32_t = 33;
char result[] = "hi33"; //How can I get this ???
目标是 assemble 一些数据可以传递给 WriteData
描述的方法 here 具有以下签名...
bool WriteData(char *buffer, unsigned int nbChar);
使用std::ostringstream
:
static const char word[] = "Elephant";
std::ostringstream stream;
stream << word << 33;
std::string text;
text = stream.str();
你会做:
std::string word = "hi";
uint32_t num = 33;
std::string result = word + std::to_string(num);
(没有 std::
如果你有 using namespace std
)
理想情况下,您不会使用 char[]
,因为没有理由这样做。
如有必要,可以从 char[]
构建 string
char word[] = "hi";
std::string result {word};
删除 const
限定符可能很危险,但如果已知 WriteData
之类的方法是安全的(即不修改其参数的内容),则可以像这样调用它这个
WriteData(const_cast<char *>(result.c_str()), result.length());
另一种选择是:
std::string word = "hi";
std::uint32_t num = 33;
auto result = word + std::to_string(num);
在这种情况下您可以使用 std::string,但是当您使用 char [] 时,您可以使用:
sprintf( result, "%s%u", word, num );
在使用字符串的情况下,您有几种方法:
第一种方式是:
auto result = word + std::to_string(num);
第二种方式可以使用stringstream:
ostringstream oss;
oss << word << num;
结果可能是:
oss.str();
要使用该库写入 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 returns你要写入的buffer的长度,你可以把它作为WriteData函数的参数。
我想连接一个 char[] 和一个 uint32_t 以获得另一个 char[] 作为结果:
char word[] = "hi";
uint32_t = 33;
char result[] = "hi33"; //How can I get this ???
目标是 assemble 一些数据可以传递给 WriteData
描述的方法 here 具有以下签名...
bool WriteData(char *buffer, unsigned int nbChar);
使用std::ostringstream
:
static const char word[] = "Elephant";
std::ostringstream stream;
stream << word << 33;
std::string text;
text = stream.str();
你会做:
std::string word = "hi";
uint32_t num = 33;
std::string result = word + std::to_string(num);
(没有 std::
如果你有 using namespace std
)
理想情况下,您不会使用 char[]
,因为没有理由这样做。
如有必要,可以从 char[]
string
char word[] = "hi";
std::string result {word};
删除 const
限定符可能很危险,但如果已知 WriteData
之类的方法是安全的(即不修改其参数的内容),则可以像这样调用它这个
WriteData(const_cast<char *>(result.c_str()), result.length());
另一种选择是:
std::string word = "hi";
std::uint32_t num = 33;
auto result = word + std::to_string(num);
在这种情况下您可以使用 std::string,但是当您使用 char [] 时,您可以使用:
sprintf( result, "%s%u", word, num );
在使用字符串的情况下,您有几种方法: 第一种方式是:
auto result = word + std::to_string(num);
第二种方式可以使用stringstream:
ostringstream oss;
oss << word << num;
结果可能是:
oss.str();
要使用该库写入 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 returns你要写入的buffer的长度,你可以把它作为WriteData函数的参数。