I have the separate_by_delimiter
function which is used inside another function outside_func
<code>std::vector<std::string>
separate_by_delimiter(std::istream &input, int num_separators, char delimiter) {
std::vector<std::string> separated_list;
std::string segment;
std::stringstream input_stream;
for (int i = 0; i < num_separators; i++) {
std::getline(input, segment, delimiter);
input_stream << segment << delimiter;
}
while (std::getline(input_stream, segment, delimiter)) {
separated_list.insert(separated_list.begin(), segment);
}
return separated_list;
}
const int n = 10; // just as an example
void outside_func(std::istream &input) {
auto split_list = separate_by_delimiter(input, n, ',');
input >> x; // x defined earlier
}
</code>
<code>std::vector<std::string>
separate_by_delimiter(std::istream &input, int num_separators, char delimiter) {
std::vector<std::string> separated_list;
std::string segment;
std::stringstream input_stream;
for (int i = 0; i < num_separators; i++) {
std::getline(input, segment, delimiter);
input_stream << segment << delimiter;
}
while (std::getline(input_stream, segment, delimiter)) {
separated_list.insert(separated_list.begin(), segment);
}
return separated_list;
}
const int n = 10; // just as an example
void outside_func(std::istream &input) {
auto split_list = separate_by_delimiter(input, n, ',');
input >> x; // x defined earlier
}
</code>
std::vector<std::string>
separate_by_delimiter(std::istream &input, int num_separators, char delimiter) {
std::vector<std::string> separated_list;
std::string segment;
std::stringstream input_stream;
for (int i = 0; i < num_separators; i++) {
std::getline(input, segment, delimiter);
input_stream << segment << delimiter;
}
while (std::getline(input_stream, segment, delimiter)) {
separated_list.insert(separated_list.begin(), segment);
}
return separated_list;
}
const int n = 10; // just as an example
void outside_func(std::istream &input) {
auto split_list = separate_by_delimiter(input, n, ',');
input >> x; // x defined earlier
}
As you can see separate_by_delimiter
relies on how many separators (delimiters) are in the input so it can create a std::vector<std::string>
(not including the part after the last delimiter as it must be passed to another variable)
How can this be done without specifying the number of separators?