如何从c ++中的字符串获取子字符串到第一个换行符?

时间:2011-11-09 10:29:19

标签: c++

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

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

从上面我必须得到第一行的内容到另一个字符串中的换行字符并保持其他内容保持不变。第一行中的字符不固定。它是可变的刺痛。

4 个答案:

答案 0 :(得分:3)

string::substrstring::find

怎么样?
#include <iostream>

int main()
{
    std::string s = "foo\nbar";
    std::cout << "first line: " << s.substr(0, s.find('\n')) << "\n";
}

答案 1 :(得分:2)

你会这样做:

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);
}

答案 2 :(得分:1)

答案 3 :(得分:1)

尝试std :: algorithms:

int main (void)
{
    std::string input(
        "exption is theo  from my fimnct!\n"
        "mt nsamre id kjsdf dskfk djfhj\n"
        "/vonsfs/sdvfs/sdvjisd/dd.so\n"
        "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