1. <legend id='qkJo9'><style id='qkJo9'><dir id='qkJo9'><q id='qkJo9'></q></dir></style></legend>

    <small id='qkJo9'></small><noframes id='qkJo9'>

      <i id='qkJo9'><tr id='qkJo9'><dt id='qkJo9'><q id='qkJo9'><span id='qkJo9'><b id='qkJo9'><form id='qkJo9'><ins id='qkJo9'></ins><ul id='qkJo9'></ul><sub id='qkJo9'></sub></form><legend id='qkJo9'></legend><bdo id='qkJo9'><pre id='qkJo9'><center id='qkJo9'></center></pre></bdo></b><th id='qkJo9'></th></span></q></dt></tr></i><div id='qkJo9'><tfoot id='qkJo9'></tfoot><dl id='qkJo9'><fieldset id='qkJo9'></fieldset></dl></div>

      <tfoot id='qkJo9'></tfoot>

      • <bdo id='qkJo9'></bdo><ul id='qkJo9'></ul>

      转义 C++ 字符串

      Escaping a C++ string(转义 C++ 字符串)
    1. <i id='UPYuB'><tr id='UPYuB'><dt id='UPYuB'><q id='UPYuB'><span id='UPYuB'><b id='UPYuB'><form id='UPYuB'><ins id='UPYuB'></ins><ul id='UPYuB'></ul><sub id='UPYuB'></sub></form><legend id='UPYuB'></legend><bdo id='UPYuB'><pre id='UPYuB'><center id='UPYuB'></center></pre></bdo></b><th id='UPYuB'></th></span></q></dt></tr></i><div id='UPYuB'><tfoot id='UPYuB'></tfoot><dl id='UPYuB'><fieldset id='UPYuB'></fieldset></dl></div>

      1. <small id='UPYuB'></small><noframes id='UPYuB'>

        <tfoot id='UPYuB'></tfoot>
      2. <legend id='UPYuB'><style id='UPYuB'><dir id='UPYuB'><q id='UPYuB'></q></dir></style></legend>

                <bdo id='UPYuB'></bdo><ul id='UPYuB'></ul>

                  <tbody id='UPYuB'></tbody>
                本文介绍了转义 C++ 字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                将 C++ std::string 转换为另一个 std::string 的最简单方法是什么,其中转义了所有不可打印的字符?

                What's the easiest way to convert a C++ std::string to another std::string, which has all the unprintable characters escaped?

                例如,对于两个字符的字符串[0x61,0x01],结果字符串可能是ax01"或a%01".

                For example, for the string of two characters [0x61,0x01], the result string might be "ax01" or "a%01".

                推荐答案

                看看 Boost 的 字符串算法库.您可以使用它的 is_print 分类器(连同它的操作符!重载)来挑选出不可打印的字符,它的 find_format() 函数可以用你想要的任何格式替换它们.

                Take a look at the Boost's String Algorithm Library. You can use its is_print classifier (together with its operator! overload) to pick out nonprintable characters, and its find_format() functions can replace those with whatever formatting you wish.

                #include <iostream>
                #include <boost/format.hpp>
                #include <boost/algorithm/string.hpp>
                
                struct character_escaper
                {
                    template<typename FindResultT>
                    std::string operator()(const FindResultT& Match) const
                    {
                        std::string s;
                        for (typename FindResultT::const_iterator i = Match.begin();
                             i != Match.end();
                             i++) {
                            s += str(boost::format("\x%02x") % static_cast<int>(*i));
                        }
                        return s;
                    }
                };
                
                int main (int argc, char **argv)
                {
                    std::string s("ax01");
                    boost::find_format_all(s, boost::token_finder(!boost::is_print()), character_escaper());
                    std::cout << s << std::endl;
                    return 0;
                }
                

                这篇关于转义 C++ 字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                How to print vector#39;s data(如何打印矢量的数据)
                Visual C++ appends 0xCC (int3) bytes at the end of functions(Visual C++ 在函数末尾附加 0xCC (int3) 字节)
                How to use a variable inside a _T wrapper?(如何在 _T 包装器中使用变量?)
                MSVC++ warning flags(MSVC++ 警告标志)
                How to read file which contains uxxxx in vc++(如何在vc++中读取包含uxxxx的文件)
                stack overflow error in C++ program(C++程序中的堆栈溢出错误)
                <tfoot id='hAWSR'></tfoot>
                  <tbody id='hAWSR'></tbody>

                <i id='hAWSR'><tr id='hAWSR'><dt id='hAWSR'><q id='hAWSR'><span id='hAWSR'><b id='hAWSR'><form id='hAWSR'><ins id='hAWSR'></ins><ul id='hAWSR'></ul><sub id='hAWSR'></sub></form><legend id='hAWSR'></legend><bdo id='hAWSR'><pre id='hAWSR'><center id='hAWSR'></center></pre></bdo></b><th id='hAWSR'></th></span></q></dt></tr></i><div id='hAWSR'><tfoot id='hAWSR'></tfoot><dl id='hAWSR'><fieldset id='hAWSR'></fieldset></dl></div>

                  <small id='hAWSR'></small><noframes id='hAWSR'>

                    <bdo id='hAWSR'></bdo><ul id='hAWSR'></ul>

                      <legend id='hAWSR'><style id='hAWSR'><dir id='hAWSR'><q id='hAWSR'></q></dir></style></legend>