Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение двумерного массива http://www.cyberforum.ru/cpp-beginners/thread896823.html
Нужно считать двумерный массив через scanf. Переменная через scanf считывается так: scanf ("%d", &n). Элемент одномерного массива можно считывать так: scanf ("%d", a); Элемент двумерного массива...
C++ Инициализация массива Есть массив: int d; Есть константа бесконечности (просто константа) inf, равная 2^30. Я попытался проинициализировать массив этой константой так: int d = {inf}; Проинициализировать не... http://www.cyberforum.ru/cpp-beginners/thread896819.html
C++ исключительные ситуации
почему не работает?? как надо?? #include<iostream> #include<conio.h> using namespace std; template<class T> class Vector {
C++ Не работает цикл
Все время проблемы с заполнением строк символами, вот щас не работает цикл, в чем проблема? do { printf("Введите название 1-го файла:"); gets(name); fflush(stdin);...
C++ Некорректный вывод http://www.cyberforum.ru/cpp-beginners/thread896784.html
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота) потом n-е кол-во раз вводятся ширина и высота конверта....
C++ Вычислить f(a) (2) Здравствуйте, форумчане! Помогите, пожалуйста, написать программы. Дано действительное а. Для функции f(a), график которой представлен на рисунке, вычислить f(a). Заранее спасибо. подробнее

Показать сообщение отдельно
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
10.06.2013, 01:52
MGOU, переписал под C++03. Пробуйте...
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <set>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
 
struct comp 
{
    bool operator () (const std::string &a, const std::string &b)
    { return a.size() < b.size(); }
};
 
int main()
{
    std::fstream ifs("in.txt", std::ios::in), ofs("out.txt", std::ios::out);
    if (ifs.is_open() && ofs.is_open()) {
        std::multiset<std::string, comp> mset;
        std::string str;
        while(std::getline(ifs, str))
            mset.insert(str);
        std::copy(mset.begin(), mset.end(), std::ostream_iterator<std::string>(ofs, "\n"));
        ofs.close();
        ifs.close();
    } else
        std::cerr << "Unable to open file(s)\n";
    return 0;
}


Добавлено через 2 минуты
MGOU,
и строку
C++
1
std::multiset<std::string, bool(*)(std::string const&, std::string const&)> mset([](std::string const& str1, std::string const& str2){return str1.size() < str2.size();});
можно записать попроще, вот так:
C++
1
2
auto comp = [](std::string const& str1, std::string const& str2){return str1.size() < str2.size();};
std::multiset<std::string, decltype(comp)> mset(comp);
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru