替换STL字符串中的换行符

mic*_*ael 9 c++ stl

我怎么能代替\r\nstd::string

Hip*_*ter 27

不要重新发明轮子,Boost String Algorithms是一个仅限标题的库,我有理由相信它可以在任何地方使用.如果您认为接受的答案代码更好,因为它已经提供,而您不需要查看文档,这里.

#include <boost/algorithm/string.hpp>
#include <string>
#include <iostream>

int main()
{
 std::string str1 = "\r\nsomksdfkmsdf\r\nslkdmsldkslfdkm\r\n";
 boost::replace_all(str1, "\r\n", "Jane");
 std::cout<<str1;
}
Run Code Online (Sandbox Code Playgroud)

  • 或者只是使用标准库函数来避免增强依赖:http://stackoverflow.com/questions/1488775/c-remove-new-line-from-multiline-string (2认同)

lsa*_*mon 15

用这个 :


    while ( str.find ("\r\n") != string::npos )
    {
        str.erase ( str.find ("\r\n"), 2 );
    }
Run Code Online (Sandbox Code Playgroud)

更有效的形式是:


    string::size_type pos = 0; // Must initialize
    while ( ( pos = str.find ("\r\n",pos) ) != string::npos )
    {
        str.erase ( pos, 2 );
    }
Run Code Online (Sandbox Code Playgroud)

  • 这是一个擦除而不是替代 - 问的问题是如何替换"\ r \n"; 他们可能需要用另一个角色替换它. (3认同)