Подскажите как можно сделать сие действие:
есть n-ое кол-во строк вида: 1. Какой-то текст. 2. Какой текст.
Нужно сформировать массив строк, где каждый элемент(строка) будет в виде:
На С# получилось сделать легко, на С++ пока не осилил.
К примеру:
// Исходные данные
string str = "1. Подъем в 8 утра. 2. Подъем в 9 утра. 3.Подъем в 10 утра."
// Выходные данные - массив строк, где:
stringArray[0] == "1. Подъем в 8 утра.";
stringArray[1] == "2. Подъем в 9 утра.";
stringArray[2] == "3. Подъем в 10 утра."
Здесь нашел ответ: https://stackoverflow.com/questions/236129/how-do-i-iterate-over-the-words-of-a-string?page=1&tab=votes#tab-top
С учетом того, что я имел возможность добавить свой разделитель (я выбрал '&'), правда не знаю, "нормально" ли это?
Что у меня получилось:
string buf; // Строка используется в качестве буфера
string stringFromUserFile = trip.GetStringFromUserFile(); // Получение строки, из которой нужно сформировать массив(с уже добавленным разделителем)
stringstream iss(stringFromUserFile); // Вставляем полученную строку в поток(если правильно понял)
vector<std::string> tokens; // Используем std::vector для хранения наших строк
// Считываем строки из потока в buf, используя разделитель '&'
while (getline(iss, buf, '&'))
{
tokens.push_back(buf); // Вставляем в конец tokens считанную строку
}
Спасибо AR Hovsepyan и Harry за отклик.
Наконец то выяснилось что вам нужно. Кажется это:
std::vector<std::string>
split(const std::string& s, char delim = '.')
{
std::vector<std::string> v;
size_t p = 0, sz = 0;
while (sz != s.npos) {
p = s.find_first_not_of(delim, sz);
//если нужно пропустить пробелы
p = s.find_first_not_of(' ', p);
if (p == s.npos) break;
sz = s.find(delim, p);
//и если нужно одну точку пропустить
if (delim == '.')
sz = s.find(delim, sz + 1);
v.push_back(s.substr(p, sz - p));
}
return v;
}
Но еще не понятно, точка после какой то цифры учитывается или нет.
auto stringArray = split(str);
for (int i = 0; i < stringArray.size(); ++i)
cout << stringArray[i] << '\n';
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я реализовываю свой класс vector, но у меня возникла проблема: как передать в конструктор массив в таком виде: ClassName object = {1, 2, 3, 4, 5};?
Написать программу, печатающую символы от A до введенного с клавиатуры символа (последний возможный: Z)Для каждого символа вывести номер,...