小编Bar*_*uda的帖子

创建一个 std::array ,其大小在运行时计算

我想创建一个对象,std::array<T, N>但问题是我只能使用返回constexpr类型的函数,否则编译器会抱怨。这里的问题是我需要根据另一个数组的大小来计算该数组的长度,可能是这样的:

template <typename T>
struct DataLength 
{
    template <typename iter>
    size_t maxPossibleLength(iter begin, iter end) 
    {
        size_t m_size = 0;
        while (begin != end) {
            m_size = m_size << 8 | std::numeric_limits<T>::max(); /* 0xff for uchar*/
            begin++;
        }
        return m_size;
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何转换这个函数的输出,以便我可以使用它而不是N

c++ constexpr c++11 stdarray

6
推荐指数
1
解决办法
8789
查看次数

如何阻止 QSettings 更改设置文件中 key=value 对的顺序?

在我的程序中,我有一个 Microsoft 的 INI 样式设置/配置文件,该文件是使用方便的类创建、编辑和存储的QSettings,但用户可以使用程序本身或她想要的任何文本编辑器手动编辑该gedit文件vim。键=值对出现的顺序很重要。问题是,每当我尝试在关闭时存储更改时,键=值对的顺序就会更改为随机顺序,并且似乎无法阻止QSettings更改它。为了便于说明,这里有一个配置文件示例:

[AlarmGroup1]
DateTimeNotInitialized=1
DateTimeStampError=2
ParametersMissingOrInconsistent=3
NotInitialized=4
FlashMemoryFatalError=5
NotIdentified=6
Run Code Online (Sandbox Code Playgroud)

更改为:

[AlarmGroup1]
ParametersMissingOrInconsistent=3
DateTimeNotInitialized=1
DateTimeStampError=2
NotInitialized=4
FlashMemoryFatalError=5
NotIdentified=6
Run Code Online (Sandbox Code Playgroud)

是否可以避免顺序的改变?为什么会有Qsettings这样的行为?

ini qsettings qt5

5
推荐指数
1
解决办法
2173
查看次数

dbus 示例中名为“D-Bus 遥控车示例”的“car.xml”文件是如何生成的?

我正在尝试创建利用 D-Bus 的程序。我研究了 Qt 提供的示例,大致相同。在其中一个名为“D-Bus 遥控车示例”中,有一个名为“car.xml”的文件,内容如下:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">
  <method name="accelerate"/>
  <method name="decelerate"/>
  <method name="turnLeft"/>
  <method name="turnRight"/>
  <signal name="crashed"/>
 </interface>
</node>
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,应该使用名为“qdbuscpp2xml”的工具生成此文件。当我使用此命令生成 xml 时:

$ qdbuscpp2xml -A car.h -o car2.xml
Run Code Online (Sandbox Code Playgroud)

我在生成的 XML 文件中得到以下内容:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="local.Car">
    <signal name="crashed">
    </signal>
    <method name="accelerate">
    </method>
    <method name="decelerate">
    </method>
    <method name="turnLeft">
    </method>
    <method name="turnRight">
    </method>
  </interface>
</node>
Run Code Online (Sandbox Code Playgroud)

它与 car.xml 的不同之处在于以下几行:

<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">
Run Code Online (Sandbox Code Playgroud)

为什么我得到一个不同的文件?示例中包含的文件 …

qt dbus qtdbus

5
推荐指数
1
解决办法
1072
查看次数

如何使用指针用数据填充 xtensor 数组

xtensor我正在尝试从库中的 blob 数据创建一个数组caffe。使用例如 bymutable_cpu_data()中的函数返回指向数据的指针。这可能吗?如果是,请举个例子。我找到了使用 OpenCV 的示例,但很相似,这使得对矩阵等数据的操作变得更加容易。caffefloat* data = output->mutable_cpu_data();xtensorMatxtensornumpy

c++ caffe xtensor

5
推荐指数
1
解决办法
1919
查看次数

从十六进制字符串构造 Numpy 数组

我有一个"89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"具体的十六进制字符串,它将包含图像的数据。

我想将其转换为 Numpy 数组,或者可能从所述数据重建 OpenCV 图像。

还将提供宽度和高度,以便知道 Numpy 数组的尺寸。

如何从上面的字符串构造一个 Numpy 数组?

python numpy numpy-ndarray

5
推荐指数
1
解决办法
4574
查看次数

从Linux中的socket编程中侦听和接受的连接中提取IP

在以下代码中,我想在接受传入连接后提取已连接客户端的IP地址.accept()实现它后我该怎么办?

int sockfd, newsockfd, portno, clilen;
portno = 8090;
clilen = 0;
pthread_t serverIn;
struct sockaddr_in serv_addr, cli_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
    perror("ERROR opening socket");
}
bzero((char *) & serv_addr, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(portno);
serv_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof (serv_addr)) < 0)
{
    perror("ERROR on binding");
}

listen(sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) & cli_addr, &clilen);
Run Code Online (Sandbox Code Playgroud)

c sockets ip network-programming

4
推荐指数
2
解决办法
1万
查看次数

如何为内核和设备驱动程序开发设置 YouCompleteMe?

我想为内核黑客设置 vim,所以我安装了YouCompleteMe以进行自动完成。但是,无论我做什么,看起来都无法正确配置它。它没有正确地完成语义;它只建议当前文件中已经使用的语义,甚至不建议标题或其他翻译单元中的语义,如果这是不可能的,那么 ycm 就毫无用处。有谁知道如何为特定目的做到这一点?如果有必要包括我的.vimrc.ycm_extra_conf.py请在评论中询问。另外,如果我需要额外的工具,请指定它们,以便我也可以设置它们。

c vim linux-kernel vim-plugin

4
推荐指数
2
解决办法
2900
查看次数

套接字ReceiveAsync合并数据包

我打算通过套接字接收数据包,但由于它们是从发送方以高频率发送的,因此它们中的一些被打包到一个byte数组中.SocketAsyncEventArgs.Buffer然后保存多个数据包,即使它们是单独发送的(使用验证wireshark).

我已经尝试对传入的数据包进行排队并异步处理它们,但我仍然得到相同的结果.

这种行为可能是什么原因?

.net c# sockets asynchronous tcp

3
推荐指数
1
解决办法
1917
查看次数

Linux套接字编程中接受后的错误号

accept()手册页RETURN VALUE部分所述:

错误处理
Linux accept()(和accept4())将新套接字上已经挂起的网络错误作为错误代码从accept(). 此行为不同于其他 BSD 套接字实现。为了可靠运行,应用程序应该检测为协议定义的网络错误,accept()EAGAIN通过重试来处理它们。在TCP / IP的情况下,这些都是 ENETDOWNEPROTOENOPROTOOPTEHOSTDOWNENONETEHOSTUNREACHEOPNOTSUPP,和ENETUNREACH

这是否意味着必须errnoaccept()返回之后和检查 的返回值之前检查 的值accept()?如果是,如果errno设置,必须采取哪些步骤?

这是我的代码处理片段accept()

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
if((errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN ||
    errno == ENONET …
Run Code Online (Sandbox Code Playgroud)

c sockets linux error-handling

3
推荐指数
1
解决办法
6164
查看次数