#include <iostream>
#include <string>
#include <vector>
#include <istream>
#include <sstream>
std::vector<std::string> split(const std::string &string_to_cut, char delimiter)
{
std::istringstream create_stream(string_to_cut);
std::vector<std::string> parts;
std::string part;
while (std::getline(create_stream, part, delimiter))
{
parts.push_back(part);
}
return parts;
}
int main()
{
std::string g = {"r,2,y,3,w,3"};
std::vector<std::string> res = split(g,',');
for (std::vector<std::string>::iterator d = res.begin(); d != res.end(); d=d+3)
{
int index = d-res.begin();
std::cout << d[index+0] << std::endl;
std::cout << d[index+1] << std::endl;
std::cout << d[index+2] << std::endl;
}
return 0;
}
Результат работы программы:
r
2
y
Вопрос: Почему не обрабатываются следующие три элемента?
Вместо
d[index+0]
нужно писать
res[index+0]
!
И еще - очень неприятное у вас условие - d != res.end()
- а если количество элементов на 3 делиться не станет?...
Возможно я не совсем понял вопрос, но такой вариант не подходит?
#include <iostream>
#include <string>
#include <vector>
#include <istream>
#include <sstream>
std::vector<std::string> split(const std::string &string_to_cut, char delimiter)
{
std::istringstream create_stream(string_to_cut);
std::vector<std::string> parts;
std::string part;
while (std::getline(create_stream, part, delimiter))
{
parts.push_back(part);
}
return parts;
}
int main()
{
std::string g = {"r,2,y,3,w,3"};
std::vector<std::string> res = split(g,',');
for (std::vector<std::string>::iterator d = res.begin(); d != res.end(); d=d+3)
{
std::cout << *(d+0) << std::endl;
std::cout << *(d+1) << std::endl;
std::cout << *(d+2) << std::endl;
}
return 0;
}
Текст задачи приведён нижеЗадача со степика, ссылку на задачу оставлю ниже, т
Пишет ошибку, но не пойму как её исправить? Может кто из профи знает?