【问题标题】:C++ escape sequence for binary value二进制值的 C++ 转义序列
【发布时间】:2018-02-05 12:40:01
【问题描述】:

有没有办法使用原始二进制值向字符串添加字符?我知道我可以这样做:

std::string output3 = std::string("\x01\x00\x01...", ...);

这是由字符的十六进制值完成的。是否可以通过其 bin 值指定字符?像这样的:

std::string output1 = std::string("\b11100101\b01000000", 7);

注意:我知道\b 有它的含义,这只是一个例子。

【问题讨论】:

  • en.cppreference.com/w/cpp/language/escape 上没有列出任何内容,所以我猜:没有。
  • 你真的需要它是带引号的字符串形式吗? (char[]){0b01100101, 0b01000000} 怎么样? (需要 c++14 或二进制的编译器扩展)。请注意,您必须小心签名。
  • 哈哈,我根本不需要它,我只是懒惰和好奇C++特性:)。我已经以与您类似的方式解决了它,这是一个简单的解决方案(顺便说一句,我必须使用 gcc 4.8.5,因此没有 c++14)。但我猜@manni66 回答了我的问题……

标签: c++ string escaping


【解决方案1】:

简答 - C++ 不提供使用二进制值转义字符的方法。

可能的解释:它从来没有被认为对任何编译器都足够有用,可以作为扩展 (AFAIK) 来实现,当然也从来没有足够有用来建议标准化。

如果它是你真正需要的东西,我建议你编写(或修改)一个预处理器来为你做这件事(但你不应该使用 \b 作为介绍器,因为它已经代表了退格字符)。

【讨论】:

    【解决方案2】:

    您可以使用append()添加单个字符,例如:

        std::string s = "abc";
        s.append(1, 'd');
        s.append(1, 0x65);  // 0x65 == 'e'
        std::cout << s << std::endl;
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2016-07-27
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2018-01-22
      • 2012-06-15
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多