• Как конвертировать list в string[]?

    @Mercury13
    Программист на «си с крестами» и не только
    Итератор — это объект с семантикой указателя, который может указывать на N+1 точку в объекте.
    5f40aef227644b9ca57224ffeb571a97.png
    Раз он с семантикой указателя, у него есть операции «унарная звезда» и −> (разыменование и разыменование+взятие поля). Также у итератора есть операция ++ (сдвинуться на следующую позицию). Если это т.н. «однонаправленный итератор» — всё, больше ничего.

    Также бывают т.н. двунаправленные итераторы (есть операция −−), и итераторы произвольного доступа (их можно свободно складывать с числами — ну совсем как указатели). В частности, у std::list итераторы двунаправленные.

    У итераторов неопределённое поведение…
    • при попытке выйти за начало или конец;
    • при попытке разыменовать, если он смотрит на последнюю позицию (отмеченную как «конец»).

    Конкретно о задаче.
    1. std::vector предпочтительнее std::list.
    2. Не нужно возвращать string*, хватает какого-нибудь контейнера (std::vector<std::string> или std::list<std::string>).
    3. Если функциональности и скорости istringstream хватает, флаг в руки! Я бы написал по хардкору, с нуля. Вот мой код, выдранный из моего проекта, наверно, будет несложно переделать его в учебный.

    void parseCommaList(
            const char *aStart,   // указатель на начало
            const char *aEnd,    // указатель на символ за концом
            char aComma,        // символ-разделитель
            bool aSkipEmpty,   // true, если пустые подстроки пропускать
            ProcParseCommaList aCallback,   // функция-нагрузка
            void *aData)   // этот параметр нужен, чтобы передавать какие хочешь данные в функцию-нагрузку, удаляй его смело!
    {
        str::trim(aStart, aEnd);    // моя функция; пододвигает aStart вперёд и aEnd назад, убирая пробелы.
                                    // Если удаление пробелов не нужно — удаляй! Если нужно — пиши сам.
        if (aStart == aEnd) return;
        const char *sstart = aStart;
        for (const char *p = aStart; p != aEnd; ++p)
        {
            if (*p != aComma) continue;
            const char *send = p;
            str::trim(sstart, send);   // то же самое, можно убрать
            if (p != sstart || !aSkipEmpty)
                aCallback(sstart, send, aData);    // замени на боевую нагрузку
            sstart = p + 1;
        }
        str::trim(sstart, aEnd);   // то же самое, можно убрать
        if (sstart != aEnd || !aSkipEmpty)
            aCallback(sstart, aEnd, aData);    // замени на боевую нагрузку
    }


    И, соответственно, версия для std::string.

    inline void parseCommaList(
            const std::string &aIn,
            char aComma,
            bool aSkipEmpty,
            ProcParseCommaList aCallback,
            void *aData)
    {
        parseCommaList(aIn.data(), aIn.data() + aIn.length(), aComma, aSkipEmpty,
                aCallback, aData);
    }
    Ответ написан
    Комментировать
  • Как считать из файла данные в строку(в файле 1 строка)?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Такой код не работает чтоли?

    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
     
    int main(int argc, char *argv[]) {
    	ifstream file("text.txt");
    	string str;
    	getline(file, str);
    
    	cout << str << endl;
    
    	system("pause");
    	return 0;
    }
    Ответ написан
    Комментировать
  • Где применить свой "таланты" программиста?

    А это плохо, что идей нет. Идеи должны быть всегда. Идея - это мечта, а если вы не мечтаете - может быть, у вас недостаточно знаний, чтобы зарождались мечты, нет почвы, на которой они могли бы расти. Вопрос в том, есть ли у вас достаточно упорства и желания для занятий самообразованием.
    Ответ написан
    Комментировать
  • Передача данных от Arduino Uno в C#. Как реализовать?

    @papkinv
    обмен данными с ардуино идет по COM порту. Копать надо в сторону класса SerialPort. Что то примерно такое
    using System;
    using System.IO;
    using System.IO.Ports;
    using System.Text;
    
    namespace MyProgram
    {
        class MainClass
        {
            public static void Main(string[] args)
            {
                Console.WriteLine("Opening serial port");
                SerialPort sp = new SerialPort("COM3", 115200); //порт и скорость обмена
                sp.Open();
                WriteLine("Hello!");
    			while (sp.BytesToRead() <= 0)
    			{
    				System.Threading.Thread.Sleep(1000);
    			}
    			Console.WriteLine(sp.ReadLine());
                sp.Close();
            }        
        }
    }
    Ответ написан
    2 комментария
  • С помощью каких компонетов в c# можно сделать прокручиваемый список изображений?

    aush
    @aush
    Возьмите DataGridView и сделайте в нем одну колонку с картинками msdn.microsoft.com/en-us/library/system.windows.fo...
    Ответ написан
    Комментировать
  • Передача параметров в функцию при клике на ссылку (JQuery)?

    homm
    @homm
    С какого перепуга мой код нельзя использовать для нескольких ссылок, я не понял.
    Раз:
    function toFunction(){};
    $(".urlparam1").click(function () { toFunction(10,'text'); });
    $(".urlparam2").click(function () { toFunction(9,'text1'); });
    

    Два:
    function toFunction(){};
    $(".urlparam1").click({num: 10, text: 'text'}, toFunction);
    $(".urlparam2").click({num: 9, text: 'text1'}, toFunction);
    


    Input внутри ссылки — это полнейшая жесть. Если сильно нужно хранить какие-то данные прямо в DOM-дереве, используем валидные атрибуты data:
    <а href="#" class="urlparam" data-num="10" data-text="text"></a>
    <а href="#" class="urlparam" data-num="9" data-text="text1"></a>
    

    $(".urlparam").click(function () {
        var num = $(this).data('num');
        var text = $(this).data('text');
    });
    
    Ответ написан
    5 комментариев