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

Объяснить код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти простые числа и занести их в новый массив http://www.cyberforum.ru/cpp-beginners/thread1542516.html
Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. Первая функция ищет простые числа и заносит их в новый массив, вторая – все числа кратные трем, третья – все четные числа. В программе создайте массив из 3-х указателей на эти функции. Добавьте меню, в котором пользователь может выбрать желаемую...
C++ Ошибка при определении переменной в switch case 2: // почасовые работники - фиксированная плата за 40ч, после 40ч полуторная ставка int workingNorm = 40; int hours; rate = 1.5; // ставка за сверхурочные часы cout << "Enter the salary for hour: "; cin >> salary; cout << "Enter the number of hours: "; http://www.cyberforum.ru/cpp-beginners/thread1542515.html
Странная инициализация, объясните код C++
Встретил такой код: int x = (3, 2 , 5 , 4 ); std::cout<<x;//4 Вопросы: -как это называться; -зачем; -что происходит в этом случае; Спасибо!
Вывести порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается C++
как вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается ?
C++ Не выходит открыть второй файл http://www.cyberforum.ru/cpp-beginners/thread1542485.html
Ниже представлена часть программы, все выполняется правильно, но мне необходимо повторить все то же самое с другим файлом и записать данные в другие массивы,естественно пытаясь сделать это путем копирования кода,представленного ниже и замены в нем необходимых переменных вылетает миллион ошибок. cout << "Введите имя файла: "<<endl; cin >> filename; ifstream fin(filename); ...
C++ Класс "Равносторонний треугольник" Создать класс равносторонний треугольник, член класса – длина стороны. Предусмотреть в классе методы вычисления и вывода сведений о фигуре – высота, биссектриса, периметр, площадь. Создать производный класс – тетраэдр, добавить в класс метод определения объема фигуры, перегрузить методы расчета площади и вывода сведений о фигуре. Написать программу, демонстрирующую работу с классом: дано N... подробнее

Показать сообщение отдельно
Operok
125 / 123 / 33
Регистрация: 15.02.2015
Сообщений: 386
Завершенные тесты: 2
02.10.2015, 00:05     Объяснить код
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
29
30
31
32
33
34
35
36
37
38
39
40
template <class ContainerT>// контейнер STL (не ассоциативный), должен быть для типа std::string
void Tokenize(const std::string& str, //строка, которую делим
    ContainerT& tokens, //контейнер в который складываем результат
    const std::string& delimiters = " ", // подстрока, которая будет делить строку
    bool trimEmpty = false) // флаг - складываем в контейнер пустые строки (когда два разделителя подряд идут)
{
    std::string::size_type pos, lastPos = 0; //индексы элементов строки
 
    using value_type = typename ContainerT::value_type; // это тип данных хранимых в контейнере (в нашем случае это псевдоним std::string)
    using size_type = typename ContainerT::size_type; // тип используемый контейнером для индексации и задания размера (скорее всего псевдоним size_t)
 
    while (true)// начало цикла (тут не прогадаешь)
    {
        pos = str.find_first_of(delimiters, lastPos); // получения позиции первого вхождения "разделителя" в строке
        if (pos == std::string::npos) если позиция не найдена, то
        {
            pos = str.length();// в pos загоняем длину строки (так как мы проверили всю строку, то pos должен быть на один больше позиции последнего символа, т.е. str.length())
 
            if (pos != lastPos || !trimEmpty) //если есть что копировать или можно добавлять в контейнер пустые строки
                tokens.push_back(value_type(str.data() + lastPos, 
                    (size_type)pos - lastPos));  // добавляем в контейнер подстроку (с позиции lastPos, кол-во - разница pos и lastPos)
            break; //это был конец строки, закругляемся
        }
        else //иначе... 
        {
            //тут тоже самое, но только без break
            if (pos != lastPos || !trimEmpty)
                tokens.push_back(value_type(str.data() + lastPos,
                    (size_type)pos - lastPos));
        }
      
        lastPos = pos + 1; //устанавливаем значение lastPos равным позиции следующим после последнего встреченного разделителя
    }
}
 
void Cut(string& text, const string& word)
{
    const auto it = search(text.begin(), text.end(), word.begin(), word.end()); // ищем в строке text подстроку word
    text.erase(it, it + word.size()); // удаляем подстроку word, смещая оставшуюся часть строки text
}

Не по теме:

вот же делать то мне нечего

 
Текущее время: 15:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru