Привет yunona
Если бы был один символ-ограничитель, то можно:
input.getline(buffer, size, delimiter),
где: buffer - это скажем char buffer[100], т.е. это массив, в который будет записаны считанные из файла символы.
size - это количество символов, кот-ые надо считать, int size = 100;
delimiter - это символ ограничетель, до которого будут считыватся данные.
Причем помни, что этот символ не попадет в массив buffer.
Таким образом, твой код:
for(int i = 0; i < 3; ++i)
std::getline(input, arr[i]);
можно заменить:
char arr[3][100];
char delimiter = '.';
for(int i = 0; i < 3 && !input.eof(); i++)
std::getline(input, arr[i], 100, delimiter);
Но тебе надо, чтобы было несколько симолов-ограничителей, поэтому то, что выше не подходит, поэтому придется считывать по символьно и проверять,т.е.
//перед функцией надо вставить using namespace std (чтобы каждый раз не писать std::)
char arr[3][100], ch;
int i, j;
ifstrem input("data.txt");
//...проверка на открытие
i = 0; j = 0;
while (!input.eof()) {
input.get(ch);
arr[i][j++] = ch;
if (ch == '.' || ch == '!' || ch == '?') {
arr[i][j] = '\0'; // показывает, что достигнут конец строки
j = 0;
if (i < 3)
i++;
else
break;
}
}
for(i = 2; i >= 0; i--)
cout << arr[i] << endl;
Надеюсь, стало не много полегче.