На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 383 384 [385] 386 387 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата IL_Agent @
    Какой тип в С++ имеет константа вида "some text" ?

    ExpandedWrap disabled
      const char[9]


    Цитата
    Какой конструктор будет вызван, если написать:
    ExpandedWrap disabled
      std::string s = "some text";

    Уж не
    ExpandedWrap disabled
      string ( const char * s );

    ли ? :)

    Он самый. И?
      А как тогда написать константу типа "строка с++" ?
        Цитата IL_Agent @
        А как тогда написать константу типа "строка с++" ?

        ExpandedWrap disabled
          const std::string(/*параметры конструктора*/);

        :-?
        Или ты хотел попросить литералы?
        Сообщение отредактировано: D_KEY -
          Цитата D_KEY @
          Или ты хотел попросить литералы?

          Хорошо, пусть будет литерал. :)
            В плюсах нет литерала для std::string.
              Цитата MyNameIsIgor @
              В плюсах нет литерала для std::string.

              А всё потому, что родные строки в С++, для которых есть литералы - всё те же, сишные char*. А std::string - обёртка, хоть и стандартная, но не очень совместимая с функциями, использующими родные с/с++ строки. :tong:
                Цитата IL_Agent @
                А всё потому, что родные строки в С++, для которых есть литералы - всё те же, сишные char*

                Диагноз совпадает с диагнозом KILLER:) То, для чего в C/C++ есть литералы в кавычках - это массивы char'ов. Для строк ни в C++, ни в C литералов нет.
                А то, что называется "сишные строки" - это массив char'ов, где последний элемент равен нулю.
                  Цитата MyNameIsIgor @
                  А то, что называется "сишные строки" - это массив char'ов, где последний элемент равен нулю.

                  Массив в общем случае для всех типов конструируется так: {'a','b','c','\0'}. Однако массив чаров можно записать в виде строки в кавычках. Потому что массив чаров с нулём на конце - это представление строк в С. В С++ есть string. Однако литерал "abc" так и остаётся массивом чаров. А string - это обёртка, как ни крути.
                    Цитата IL_Agent @
                    А std::string - обёртка

                    std::string не является оберткой над С-строкой. Более того, он не хранит С-строку.

                    Цитата
                    хоть и стандартная, но не очень совместимая с функциями, использующими родные с/с++ строки. :tong:

                    Под "родными строками" ты имеешь в виду массивы символов?
                    С ними совместим полностью vector, а string - это класс именно для строк(не с нулевым символом в конце - а для нормальных :) ).
                    Совместимость с C API не ставилась целью при его(класса строк) проектировании, что правильно.
                    Хотя он умеет конструироваться из С-строки и, наоборот, дает прочитать свое содержимое в виде С-строки. Изменить не дает. Что тоже правильно.
                    Сообщение отредактировано: D_KEY -
                      Цитата IL_Agent @
                      Массив в общем случае для всех типов конструируется так: {'a','b','c','\0'}. Однако массив чаров можно записать в виде строки в кавычках.

                      Именно. Литералы чаще всего и являются сокращением записи. Чтобы не записывать всегда "в общем виде".
                      Цитата IL_Agent @
                      Потому что массив чаров с нулём на конце - это представление строк в С

                      Нет, это просто соглашение. Этому соглашению следуют некоторые функции из стандартной библиотеки C. И всё, и не более того :)
                        Цитата IL_Agent @
                        Однако массив чаров можно записать в виде строки в кавычках. Потому что массив чаров с нулём на конце - это представление строк в С.

                        Ага.

                        Цитата
                        В С++ есть string. Однако литерал "abc" так и остаётся массивом чаров.

                        Конечно. Совместимость ж.

                        Цитата
                        А string - это обёртка, как ни крути.

                        Нет. Это самостоятельный тип. А его внутреннее представление тебя не касается :)
                          Цитата MyNameIsIgor @
                          Нет, это просто соглашение.

                          Для чего оно ? Разве не для работы со строками ?

                          Почему бы "абц" не быть литералом std::string ?

                          Ага, совместимость в ущерб логичности и стройности...
                          Сообщение отредактировано: IL_Agent -
                            IL_Agent, а на шарпе "abc" какого типа?
                              Цитата D_KEY @
                              Нет. Это самостоятельный тип. А его внутреннее представление тебя не касается :)

                              Ну так и в Си я могу объявить точно такой же тип стринг, со своим внутренним представлением, конверторами в/из char*. Однако Cи-строкой так и останется char*...

                              Добавлено
                              Цитата Повстанець @
                              IL_Agent, а на шарпе "abc" какого типа?

                              System.String
                                Цитата IL_Agent @
                                System.String
                                А так:
                                "abc".Length я троечку получу?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 383 384 [385] 386 387 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5055 ]   [ 15 queries used ]   [ Generated: 30.07.26, 13:56 GMT ]