DennisKingsman
@DennisKingsman
Студент

Почему не выходит из цикла?

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	ifstream in("E:\\f.txt");
	ofstream out1("E:\\h.txt"), out2("E:\\g.txt");
	if (!in)
	{
		cout << "Error" << endl;
		system("pause");
		return 0;
	}
	string s;
	s += ' ';
	while (in.peek() != EOF)
	{
		getline(in, s, '#');
	}
	string sub;
	int space = 0; 
	string::size_type len = s.size();
	for (unsigned int i = 0; i < len; i = space + 1)
	{
		space = s.find(' ',  i); 
		sub = s.substr(i, space - i);
		if (sub[0] == '-')
		{
			out1 << sub << ' ';
		}
		else
		{
			out2 << sub << ' ';
		} 
	}
	in.close();
	out1.close();
	out2.close();
	system("pause");
	return 0;
}

зацикливается на моменте выделения подстроки , вроде все ровно , ищет пробел между числами, выделяет подстроку , от начала поиска до пробела , проверяет число на отрицательность , передвигает маркер на следующий после пробела элемент и начинает поиск с него
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@Codebaker
Всё умею, всё могу!
Вы не проверяете на std::npos результат в space:

space = s.find(' ', i);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы