Как добавить добавлять 1 элемент строки, исключая пробелы?
Входные данные: На вход подаётся последовательность чисел.(Пример 1 2 3). Необходимо добавить все элементы в массив, исключая пробелы между ними.
Моя реализация:
#include <iostream>
using namespace std;
int main(){
string st;
getline(cin, st);
int len_st = (st.size());
int count = 0;
char *word = new char[len_st];
char x;
for (int i = 0; i <= len_st; i ++) {
count += 1;
if (st[i] != " ") {
x = st[i];
word[i] = x;
}
}
delete[] word;
}
Пытался реализовать вот так, но комплиятор ругается на сравнение st[i] != " ".
Подскажите, как можно по другому реализовать подобный алгоритм или укажите на ошибку в моей реализации.
Ответы (1 шт):
Автор решения: Bearded Beaver
→ Ссылка
У вас метка c++11, так что я бы написал как-нибудь вот так:
std::vector<int> splitString(const std::string& str)
{
std::vector<int> result;
auto begin = str.begin();
auto end = begin;
while (end != str.end())
{
// находим первый не пробельный символ
begin = std::find_if(begin, str.end(), [](char c) -> bool{
return c != ' ';
});
if (begin == str.end()) // если не нашли, выходим, тут больше ловить нечего
break;
end = std::find(begin, str.end(), ' '); // находим следующий пробельный символ
std::string_view word(&*begin, std::distance(begin, end)); // это и будет очередное число
result.push_back(std::stoi(word.data())); // тут не помешала бы обработка ошибок
begin = end; // готовимся искать следующее число
}
return result;
}