小编use*_*363的帖子

C++ 字符串中的回车和换行

我正在使用 C++ 处理一些 TCP/IP 连接设备的通信。设备要求发送的命令以\r\n 结束。

我正在使用一个配置文件,从中读取通信中使用的命令。

我遇到的问题是命令 \r\n 被解释为它们的 4 个字符,而不是作为回车和换行符。

我曾尝试使用 string.data(),但得到的结果与 string.c_str() 相同。

有没有什么好的功能可以从一开始就让它正确,还是我必须用正常的替换功能来解决这个问题?或者其他一些我没有想过的方式?

我想,如果我没有找到一个非常巧妙的方法来做到这一点,我只会在配置文件中省略 \r\n 并在之后添加它,但是如果没有任何困难,将它全部放在配置文件中会很好编码。我想如果我尝试用正确的字符替换四个字符 \r\n ,我还需要做一些硬编码。

谢谢你的帮助

编辑:配置文件包含这样的行。

MONITOR_REQUEST = "TVT?\r\n"

c++ string carriage-return linefeed

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

RPM SPEC Systemd 启用并启动

我已经创建了一个 RPM SPEC 文件,但我在启用和启动 Systemd 方面遇到了困难。通过 yum 更新软件包会禁用并停止该服务。发行版是Centos 7.x

我已将该服务安装在/etc/systemd/system下。这就是我尝试过的目的,但它不起作用。

我还没有找到任何关于如何做到这一点的好的工作示例。

我使用此页面作为参考。 https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax

    #Pre installation/upgrade of RPM section
    %pre      
      #Upgrading
      if [ $1 -eq 2 ]; then
        /usr/bin/systemctl stop %{pkgname}.service >/dev/null 2>&1 ||:
      fi

    %post
    %systemd_post %{pkgname}.service

      if [ $1 -eq 1 ]; then        
        /usr/bin/systemctl daemon-reload
        /usr/bin/systemctl start %{pkgname}.service
      fi
      if [ $1 -eq 2 ]; then
        /usr/bin/systemctl daemon-reload
        /usr/bin/systemctl start %{pkgname}.service    
      fi

   %preun
   %systemd_preun %{pkgname}.service
    #old package
    #uninstall
    if [ $1 -eq 0 ]; then
      /usr/bin/systemctl --no-reload disable …
Run Code Online (Sandbox Code Playgroud)

linux rpm centos7

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

标签 统计

c++ ×1

carriage-return ×1

centos7 ×1

linefeed ×1

linux ×1

rpm ×1

string ×1