c++ - 我想将字符组合成一个字符串
问题描述
#include <stdio.h>
#include "serialcomm.h"
#include <windows.h>
#include <process.h>
#define BUFF_SIZE 256
int main()
{
CSerialComm serialComm;
BYTE buff[BUFF_SIZE] = { 0, };
int op = 0;
int port = 0;
int size = 0;
int size2 = 0;
int restart = 0;
char port_s[20] = "";
char send_string[1000];
char confirm[BUFF_SIZE];
char dec[BUFF_SIZE];
printf("select mode(1. send, 2. receive) : ");
scanf_s("%d", &op);
printf("insert port num : ");
scanf_s("%d", &port);
getchar();
if (op == 1) {
printf("plz submit data (ex : 0x0a 0x01, 0x02, 0x0b) : ");
gets_s(send_string, sizeof(send_string));
size = serialComm.getHexData(send_string, buff);
printf("read size(max %d) : ", BUFF_SIZE);
scanf_s("%d", &size2);
}
sprintf_s(port_s, "COM%d", port);
// STEP 1. SerialPort Connect
if (!serialComm.connect(port_s)) {
printf("connect faliled");
return -1;
}
else {
printf("connect successed\n");
}
if (op == 1) {
// STEP 2. Send Command
while (1) {
if (!serialComm.sendCommand(buff, size)) {
printf("send command failed\n");
}
else {
int i = 0;
printf("tx data(%d) : [ ", size);
for (i = 0; i < size; i++) {
printf("0x%02X ", buff[i]);
}
printf("]\n");
}
Sleep(2000);
serialComm.readByte(buff, size2);
int j = 0;
printf("rx data(%d) : [ ", size2);
for (j = 0; j < size2; j++) {
printf("0x%02X ", buff[j]);
}
printf("]\n");
//data convert
char buffer[256];
int m = 0;
printf("[ ");
for (m = 0; m < size; m++) {
fprintf(stderr, "%d", buff[m]);
printf(" ");
}
printf("]\n");
sprintf_s(buffer, sizeof(buffer), "%d", buff[m]);
char data1 = buff[0];
char data2 = buff[1];
char data3 = buff[2];
char data4 = buff[3];
char data5 = buff[4];
char data6 = buff[5];
char data7 = buff[6];
char data8 = buff[7];
char data1 = buff[8];
size = serialComm.getHexData(send_string, buff);
Sleep(2000);
}
buff的值为
int m = 0;
printf("[ ");
for (m = 0; m < size; m++) {
printf("%d",buff[m]);
//fprintf(stderr, "%d", buff[m]);
printf(" ");
}
printf("]\n");
[ 1 4 4 0 2 0 3 26 ]
我想将此值存储为字符串并输出,因此我想通过将buff数组的元素一一存储和连接来实现它。但是 C++ 聚合对象需要使用“{...}”进行初始化。出现错误。有解决方法或其他好的选择吗?
解决方案
更新:根据cplusplus.com,也许是一个更有信誉的来源,看起来这是你最好的选择:
#include <string>
std::string s = "[ " + std::string(buff, size) + " ]";
根据geeksforgeeks,看起来这是您的第二个最佳选择:
// converts character array
// to string and returns it
string convertToString(char* a, int size)
{
int i;
string s = "";
s = s + "[ ";
for (i = 0; i < size; i++) {
s = s + a[i];
}
s = s + " ]";
return s;
}
要从 buff 数组中获取字符串:
string s = convertToString(buff, size);
推荐阅读
- java - 运行 Spring MVC + Hibernate+ Rest API 项目时遇到错误
- json - 制表器不识别列?
- json - 反序列化对象c#RIOT API的json数组[不工作]
- python-3.x - 如何使用 selenium 获取 youtube 中的所有评论?
- pouchdb - 如何使用单个查询 pouchDB 获取多个文档
- python - 将包含列表的列表转换为列表,然后转换为字符串
- python - 在 Python 中预加载 MP3 短片段以消除播放间隙(用于 Alexa 技能)
- c++ - 如何实现 std::unordered_map 搜索算法?
- reactjs - 参数如何在 useState 函数中的箭头函数的单行表达式中工作
- godot - 如何通过 gdscript 在移动壁(StaticBody2D)上 Pinjoint2D 飞镖(Kinematicbody2D)