Сделал функцию, которой передаём поток (как при чтении числа из строки),
из которого читаем:
string getElement(istringstream* strStream) {А потом полученную строку пытаемся загнать в переменную.
char ch;
string* input = new string;
input->assign("");
// Пропуск пробелов
do {
strStream->read(&ch, 1);
} while (ch == ' ');
// Считывание минуса, если он есть
if (ch == '-') {
input->append(1, ch);
strStream->read(&ch, 1);
}
// Поэлементное считывание числа
do {
if ((ch >= '0') && (ch <= '9')) {
if (strStream->good()) {
input->append(1, ch);
strStream->read(&ch, 1);
} else
break;
} else if (!strStream->good() || (ch == ' ') || (ch == '\n') || (ch == '\0'))
break;
else {
return "error";
}
} while (1);
return *input;
}
Отрывок из кода, где такая штука используется:
testString->assign("");
getline(inputfile, *testString);
testStream = new istringstream(*testString);
element = new istringstream(getElement(testStream));
delete testStream;
if ((*element >> s) && (s > 0) && (s <= 127)) {
outputfile << s << endl;
delete element;
}
Комментариев нет:
Отправить комментарий