如何在C ++中获取子字符串并在字符串

时间:2017-03-20 19:01:22

标签: c++ string substring multiline

我有一个字符串Hello foo你好吗?

我想将其更改为Hello \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \

我想知道获取子字符串Hello add \ r \ n代替空格的方法,并按原样添加所有其他字符串。这是为了显示多行。

编辑:

我们不知道第一个子串的长度。我们不知道第一个子串会有多长。

感谢。

3 个答案:

答案 0 :(得分:1)

要获得子字符串,您的答案就在于函数string::substr

string::substr (size_t pos = 0, size_t len = npos) const;
  1. pos 参数是要作为子字符串复制的第一个字符的索引。
  2. len 参数是从索引开始包含在子字符串中的字符数。
  3. 返回一个新实例化的字符串对象,其值为调用它的指定字符串对象的子字符串。

    // Example:
    #include <iostream>
    #include <string>
    
    int main () {
      std::string str1= "Hello Stack Overflow";
      std::string str2 = str.substr (0,5); // "Hello
      std::cout << str2 << std::endl; // Prints "Hello"
    
      return 0;
    
    }
    

    更新:但是它看起来与你的标题不同,你需要的是在不知道子串的长度之间改变一些字符

    为此你的答案是string::replace

    string& replace (size_t pos,  size_t len,  const string& str);
    

    替换从索引pos开始的字符串部分,然后上升到索引len。

    1. pos 参数是要替换的第一个字符的索引。
    2. len 参数是从索引开始替换的字符数。
    3. str 字符串参数将其替换为。
    4.     // Example
          int main() 
             std::string str = "Hello Stack Overflow.";
             std::string str2 = "good";
             str.replace(6, 4, str2);   // str = "Hello goodStackOverflow"
             return 0;
          }
      

      在某些编译器中,您可能不需要添加它,但是您需要包含字符串标头以确保您的代码可移植并且可维护:

      #include <string>
      

答案 1 :(得分:1)

#include <iostream>
#include <string>

int main() {
  std::string s = "Hello foo how are you.";
  s.replace(s.find_first_of(" "),1,"\r\n");
  std::cout << s << std::endl; #OUTPUTS: "Hello
                               #          foo how are you."
  return 0;
}

您要在此处使用的是string::replace(pos,len,insert_str);,此功能允许您使用s替换"\r\n"中指定的子字符串。

修改:您想使用s.find_first_of(str)查找字符串" "的第一个匹配项

答案 2 :(得分:1)

不是一个完整的答案,因为这看起来像家庭作业,但您可以使用的其他方法包括std::find()中的<algorithm>strchr()中的<string.h>。如果您需要搜索任何空格而不仅仅是' '字符,则可以使用std::find_first_of()strcspn()

将来,我会查看以下文档:std::basic_string的成员函数,<string>中的效用函数,<algorithm>中的函数以及<string.h>中的函数{1}},因为这些通常是您必须使用的工具。