首页 > 解决方案 > 我想将字符组合成一个字符串

问题描述

#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++ 聚合对象需要使用“{...}”进行初始化。出现错误。有解决方法或其他好的选择吗?

标签: 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);

推荐阅读