多数组结构

时间:2019-04-15 12:19:28

标签: c++ arrays struct

我在结构体中遇到了一个小问题。 我需要带有lengt 2的char数组的(恒定)结构。 它们将是我的uart消息的命令(2个字符)。

当我打印2chars的数组值时,将打印该点之后的所有chars。但是我只需要2个项目,如果正确执行该怎么办。

我总共将收到125条指令

struct Test_struct {
 char a[2]={'a','a'};
 char b[2]={'b','b'};
 char c[2]={'c','c'};
};
const struct Test_struct Test;
Tfunc(Test.b);


void Tfunc(const char *funct)
{
  cout << funct;
}

制作说明列表的简便方法。 1条指令是2个元素的字符。

在futere中,我喜欢使用这种东西。 Command.Network.ID ID将是我的2字符。Network将是包含所有网络命令的结构。其他命令列表将是Security或IO,… 和全局struct命令。它必须是一个结构。

在编程时,我喜欢键入命令。并选择一个子组并选择一个指令。然后,我不需要在大列表中搜索。 我不喜欢:const char [2] ID = ...               const char [2]…

您有一些建议吗? thnx

1 个答案:

答案 0 :(得分:0)

<<上的std::cout运算符期望char*为空终止。您的char数组没有空终止符,这就是为什么它将继续打印直到碰巧遇到内存0(或崩溃)的原因。如果您只想为不同的命令使用一堆全局常量,请考虑使用例如带有一堆std::string_view常量的名称空间:

#include <string_view>

namespace Commands
{
    using namespace std::literals;

    inline constexpr auto a = "aa"sv;
    inline constexpr auto b = "bb"sv;
    inline constexpr auto c = "cc"sv;
}