如何在c++中从字符串中获得子字符串到第一个换行字符

how to get substring upto a first newline character from a string in c++?

本文关键字:字符串 第一个 换行 字符 c++      更新时间:2023-10-16

我有一个内容很大的字符串。我必须在第一个换行字符之前和换行字符之后分离出字符串的内容。字符串内容如下:

std::string = "exption is theo  from my fimnct!
               mt nsamre id kjsdf dskfk djfhj
               /vonsfs/sdvfs/sdvjisd/dd.so
               dfjg dfk dflkkm sdfk " 

从上面我必须得到第一行的内容,直到换行字符在另一个字符串中,并保持其他内容保持不变。第一行的字符不固定。

string::substrstring::find呢:

#include <iostream>
int main()
{
    std::string s = "foonbar";
    std::cout << "first line: " << s.substr(0, s.find('n')) << "n";
}

你可以这样做:

std::string first, second, all = "...";
size_t pos = all.find('n')
if(pos != std::string::npos)
{
    first = all.substr(0, pos);
    second = all.substr(pos+1);
}

Try std::algorithms:

int main (void)
{
    std::string input(
        "exption is theo  from my fimnct!n"
        "mt nsamre id kjsdf dskfk djfhjn"
        "/vonsfs/sdvfs/sdvjisd/dd.son"
        "dfjg dfk dflkkm sdfk"
    );
    std::string first_line(input.begin(), std::find(input.begin(), input.end(), 'n'));
    std::string rest_lines(std::find(input.begin(), input.end(), 'n'), input.end());
    std::cout << first_line << std::endl;
    std::cout << "---" << std::endl;
    std::cout << rest_lines << std::endl;
    return 0;
}

打印出

exption is theo  from my fimnct!
---
mt nsamre id kjsdf dskfk djfhj
/vonsfs/sdvfs/sdvjisd/dd.so
dfjg dfk dflkkm sdf

std::string::substrstd::string::find_first_of