C++ 我想组合字符组成一个字符串 #包括 #包括“serialcomm.h” #包括 #包括 #定义BUFF_大小256 int main() { CSerialComm串行通信; 字节buff[buff_SIZE]={0,}; int op=0; int端口=0; int size=0; int size2=0; int重新启动=0; 字符端口_s[20]=“”; char send_字符串[1000]; 字符确认[BUFF_SIZE]; char dec[BUFF_SIZE]; printf(“选择模式(1.发送,2.接收):”; scanf_s(“%d”和&op); printf(“插入端口号:”); 扫描单元(“%d”和端口); getchar(); 如果(op==1){ printf(“plz提交数据(例如:0x0a 0x01、0x02、0x0b):”; 获取(send_字符串,sizeof(send_字符串)); size=serialComm.getHexData(发送字符串,buff); printf(“读取大小(最大%d):”,BUFF_大小); 扫描单位(“%d”和尺寸2); } sprintf_s(端口,“COM%d”,端口); //步骤1.串行端口连接 如果(!串行通信连接(端口)){ printf(“连接故障”); 返回-1; } 否则{ printf(“连接成功\n”); } 如果(op==1){ //步骤2.发送命令 而(1){ 如果(!serialComm.sendCommand(buff,size)){ printf(“发送命令失败\n”); } 否则{ int i=0; printf(“发送数据(%d):[”,大小); 对于(i=0;i

C++ 我想组合字符组成一个字符串 #包括 #包括“serialcomm.h” #包括 #包括 #定义BUFF_大小256 int main() { CSerialComm串行通信; 字节buff[buff_SIZE]={0,}; int op=0; int端口=0; int size=0; int size2=0; int重新启动=0; 字符端口_s[20]=“”; char send_字符串[1000]; 字符确认[BUFF_SIZE]; char dec[BUFF_SIZE]; printf(“选择模式(1.发送,2.接收):”; scanf_s(“%d”和&op); printf(“插入端口号:”); 扫描单元(“%d”和端口); getchar(); 如果(op==1){ printf(“plz提交数据(例如:0x0a 0x01、0x02、0x0b):”; 获取(send_字符串,sizeof(send_字符串)); size=serialComm.getHexData(发送字符串,buff); printf(“读取大小(最大%d):”,BUFF_大小); 扫描单位(“%d”和尺寸2); } sprintf_s(端口,“COM%d”,端口); //步骤1.串行端口连接 如果(!串行通信连接(端口)){ printf(“连接故障”); 返回-1; } 否则{ printf(“连接成功\n”); } 如果(op==1){ //步骤2.发送命令 而(1){ 如果(!serialComm.sendCommand(buff,size)){ printf(“发送命令失败\n”); } 否则{ int i=0; printf(“发送数据(%d):[”,大小); 对于(i=0;i,c++,C++,buff的值是 #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 por

buff的值是

#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);
        }
intm=0;
printf(“[”);
对于(m=0;m
[1 4 0 2 0 3 26]

我想将这个值存储为一个字符串并输出,所以我想通过逐个存储和连接buff数组的元素来实现它 C++聚合对象需要用{{}}初始化。 出现错误。是否有解决方法或其他好的替代方法?

更新:根据可能更知名的消息来源,这似乎是您的最佳选择:

int m = 0;
                printf("[  ");
                for (m = 0; m < size; m++) {
                    printf("%d",buff[m]);
                    //fprintf(stderr, "%d", buff[m]);
                    printf("  ");
                }
                printf("]\n");
#include <string>
std::string s = "[  " + std::string(buff, size) + "  ]";
更新:根据一个可能更知名的消息来源,这似乎是您的最佳选择:

int m = 0;
                printf("[  ");
                for (m = 0; m < size; m++) {
                    printf("%d",buff[m]);
                    //fprintf(stderr, "%d", buff[m]);
                    printf("  ");
                }
                printf("]\n");
#include <string>
std::string s = "[  " + std::string(buff, size) + "  ]";

你可以用一个完整的程序来发布< <代码> >和<代码> int()/>代码吗?你的代码没有什么意义。为什么你要声明相同的代码< char < /COD>数组两次?请注意,在2021中,实际上你需要库(比如……)来处理Mead,也可以处理C++编译器的文档(例如…)正文中的一些好代码进入main()函数和#include#include#include“serialcomm.h”#include#include//头文件,其中strcat函数是declared的。你能用
#include
s和
int main()发布一个完整的程序吗<代码>?你的代码真的没有意义。为什么你要声明两次相同的代码> char < /Cord>数组两次?请注意,在2021中,实际上你需要库(比如……)来处理Mead,也需要C++编译器的文档(例如…),一些好的代码在正文中输入()。函数和γ包含α,其中包括“SerialCim.h”,其中包括一个包含/String文件的函数,其中,StrCAT函数是按GeksFrEGEKEs声明的,这是一个在实际编写正确C++代码时不推荐的站点。
谢谢。我将编写它,以便您下次可以理解它。我认为这是错误的,因为他们试图打印字节的值而不是字符(注意
%d“
)。在这种情况下,它必须是一个带有
std::to_字符串(a[I])+'
@olm
%d”的循环
是一个整数格式说明符,请检查。这就是为什么我认为OP需要整数值。@AdamTV是的,但std::string不会自动将任何值转换为可读的整数。在这两个示例中,它只是打印字符的(ascii)值。
char a[]={65,66}
变成“[AB]”。这就是为什么
std::to_string()需要打印< [代码66 ]。按照GeksFrEGEKESS——一个在实际编写正确C++代码时不推荐的站点。整个循环不是必需的<代码> s=“[++STD::字符串(a,size)+”]
谢谢。我将编写它,以便您下次可以理解它。我认为这是错误的,因为他们试图打印字节的值而不是字符(注意
%d“
)。在这种情况下,它必须是一个带有
std::to_字符串(a[I])+'
@olm
%d”的循环
是整数格式说明符,请检查。这就是我认为OP需要整数值的原因。@AdamTV是,但std::string不会自动将任何值转换为可读的整数。在这两个示例中,它只是打印(asc)