#c
#c
Вопрос:
У меня есть строка с большим содержимым. Я должен отделить содержимое строки до первого символа новой строки и после символа новой строки. содержимое строки выглядит следующим образом:
std::string = "exption is theo from my fimnct!
mt nsamre id kjsdf dskfk djfhj
/vonsfs/sdvfs/sdvjisd/dd.so
dfjg dfk dflkkm sdfk "
сверху я должен получить содержимое первой строки до символа новой строки в другой строке и сохранить остальное содержимое неизменным. Символы в первой строке не являются фиксированными. это переменная sting .
Комментарии:
1. В приведенной выше строке нет символа новой строки. Это было бы так:
n
. Просто говорю.2. на самом деле, это не будет компилироваться
3. Я согласен. Предварительные условия вашего вопроса просто неверны.
Ответ №1:
А как насчет string::substr
и string::find
:
#include <iostream>
int main()
{
std::string s = "foonbar";
std::cout << "first line: " << s.substr(0, s.find('n')) << "n";
}
Ответ №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);
}
Ответ №3:
Попробуйте std::алгоритмы:
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
Комментарии:
1.
std::string
имеет собственные функцииfind
и find_ *`, здесь нет необходимости использовать алгоритмы STL.2.
std::string::find
возвращает,size_t
покаstd::find
возвращает итератор
Ответ №4:
Комментарии:
1. без мотивирующего примера мне трудно обосновать
find_first_of
болееfind
2. Я не вижу никаких различий между
find
иfind_first_of
для этого случая (мы говорим об одном символе). Это было только первое, что пришло мне в голову.