Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Работа с файлами


Автор: ZhekaEA 25.3.2009, 17:56
Здравствуйте Уважаемые!!!
Очень нужна помощь с программой...
Вот условие задачи: Написать программу, которая в заданном текстовом файле заменяет все строчные латинские буквы прописными, а прописные – строчными.

Заранее благодарен!!!

Автор: zim22 25.3.2009, 18:15
Код
#include <fstream>
#include <string>
#include <cctype>

int main()
{
    std::string text;
    std::ifstream in("file.txt");
    getline(in, text, '\032');
    for (std::string::size_type i = 0; i != text.size(); ++i)
    {
        if (isupper(text[i]))
            text[i] = tolower(text[i]);
        else
            text[i] = toupper(text[i]);
    }
    std::ofstream out("result.txt");
    out << text;
    
    return 0;
}




Автор: azesmcar 25.3.2009, 18:32
zim22, еще это все в цикл завернуть чтоб для всех строк файла работало..ну или так например можно как вариант чтобы поизвращатся smile

Код

#include <fstream>
#include <string>
#include <cctype>
#include <algorithm>
#include <functional>

struct changeCase : std::unary_function<char, void>
{
    void operator () (char& r) {
        if (isupper(r))
            r = tolower( r );
        else
            r = toupper( r );
    }
};

int main()
{
    std::string text;
    std::ifstream in("file.txt");
    std::ofstream out("result.txt");

    while ( getline(in, text ) )
    {
        std::for_each( text.begin(), text.end(), changeCase() );
        out << text;
    }
    out.close();
    in.close();
    return 0;
}


Автор: zim22 25.3.2009, 18:47
Цитата(azesmcar @  25.3.2009,  18:32 Найти цитируемый пост)
zim22, еще это все в цикл завернуть чтоб для всех строк файла работало..

оно у меня для всех строк работает. я целый файл за раз кушаю, а не строчку. '\032' - это символ конца файла (в Виндоус)

вы не в ту сторону пихаете smile
Код

out >> text;

Автор: azesmcar 25.3.2009, 18:50
Цитата

оно у меня для всех строк работает. я целый файл за раз кушаю, а не строчку. '\032' - это символ конца файла (в Виндоус)


а ну да smile не заметил..

Цитата

вы не в ту сторону пихаете smile

точно...не проверял, прямо тут написал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)