Как найти все слова начинающиеся на гласную букву?
Есть задание: Написать программу, которая считывает английский текст из файла и записывает в другой файл те слова, которые начинаются с гласных букв. Не понимаю как можно реализовать поиск гласной буквы в начале слова. Есть только концепция как все сделать.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string line;
ifstream in("D:\\gavno.txt"); // открываем файл для чтения
if (in.is_open())
{
while (getline(in, line))
{
if// Тут по идеи должно быть условие для слов на гласную
// ну и тут дальше просто запись слова в новый файл
}
}
in.close(); // закрываем файл
cout << "End of program" << endl;
return 0;
}
Ответы (2 шт):
вот я тут накалякал, но потом понял что это не сохранит пробелы и переводы строк
#include <iostream>
#include <bitset>
#include <locale>
#include <fstream>
#include <string>
using namespace std;
int main()
{
bitset<32>mask("00000001000100000100000100010001");
// ......zyxwvutsrqponmlkjihgfedcba
string word;
ifstream f("in.txt");
ofstream g("out.txt");
while(!f.eof())
{
f>>word;
if(mask[tolower(word[0],locale())-97])
g<<word<<endl;
}
return 0;
}
не нужно переменную называть in, вроде это имя уже занято
Поскольку точного определения, что такое слово, у вас нет, будем считать, что это просто нечто, отделенное пробельными символами (слово в понимании потоков C++).
Тогда проще всего заменить ваш
while (getline(in, line))
{
if// Тут по идеи должно быть условие для слов на гласную
// ну и тут дальше просто запись слова в новый файл
}
на чтение по словам
for(string word; in >> word; )
{
if (word.find_first_of("AEIOUYaeiouy")==0)
{
// Записывать слово word в другой файл
}
}
Как именно записывать - через пробел, каждое в свою строку и т.д. - это смотрите сами, вам виднее.