Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 383 384 [385] 386 387 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5761
,
|
|
|
|
![]() ![]() const char[9] Цитата Какой конструктор будет вызван, если написать: ![]() ![]() std::string s = "some text"; Уж не ![]() ![]() string ( const char * s ); ли ? ![]() Он самый. И? |
|
Сообщ.
#5762
,
|
|
|
|
А как тогда написать константу типа "строка с++" ?
|
|
Сообщ.
#5763
,
|
|
|
|
Цитата IL_Agent @ А как тогда написать константу типа "строка с++" ? ![]() ![]() const std::string(/*параметры конструктора*/); Или ты хотел попросить литералы? |
|
Сообщ.
#5764
,
|
|
|
|
Цитата D_KEY @ Или ты хотел попросить литералы? Хорошо, пусть будет литерал. |
|
Сообщ.
#5765
,
|
|
|
|
В плюсах нет литерала для std::string.
|
|
Сообщ.
#5766
,
|
|
|
|
Цитата MyNameIsIgor @ В плюсах нет литерала для std::string. А всё потому, что родные строки в С++, для которых есть литералы - всё те же, сишные char*. А std::string - обёртка, хоть и стандартная, но не очень совместимая с функциями, использующими родные с/с++ строки. |
|
Сообщ.
#5767
,
|
|
|
|
Цитата IL_Agent @ А всё потому, что родные строки в С++, для которых есть литералы - всё те же, сишные char* Диагноз совпадает с диагнозом KILLER'а То, для чего в C/C++ есть литералы в кавычках - это массивы char'ов. Для строк ни в C++, ни в C литералов нет.А то, что называется "сишные строки" - это массив char'ов, где последний элемент равен нулю. |
|
Сообщ.
#5768
,
|
|
|
|
Цитата MyNameIsIgor @ А то, что называется "сишные строки" - это массив char'ов, где последний элемент равен нулю. Массив в общем случае для всех типов конструируется так: {'a','b','c','\0'}. Однако массив чаров можно записать в виде строки в кавычках. Потому что массив чаров с нулём на конце - это представление строк в С. В С++ есть string. Однако литерал "abc" так и остаётся массивом чаров. А string - это обёртка, как ни крути. |
|
Сообщ.
#5769
,
|
|
|
|
Цитата IL_Agent @ А std::string - обёртка std::string не является оберткой над С-строкой. Более того, он не хранит С-строку. Цитата хоть и стандартная, но не очень совместимая с функциями, использующими родные с/с++ строки. ![]() Под "родными строками" ты имеешь в виду массивы символов? С ними совместим полностью vector, а string - это класс именно для строк(не с нулевым символом в конце - а для нормальных ).Совместимость с C API не ставилась целью при его(класса строк) проектировании, что правильно. Хотя он умеет конструироваться из С-строки и, наоборот, дает прочитать свое содержимое в виде С-строки. Изменить не дает. Что тоже правильно. |
|
Сообщ.
#5770
,
|
|
|
|
Цитата IL_Agent @ Массив в общем случае для всех типов конструируется так: {'a','b','c','\0'}. Однако массив чаров можно записать в виде строки в кавычках. Именно. Литералы чаще всего и являются сокращением записи. Чтобы не записывать всегда "в общем виде". Цитата IL_Agent @ Потому что массив чаров с нулём на конце - это представление строк в С Нет, это просто соглашение. Этому соглашению следуют некоторые функции из стандартной библиотеки C. И всё, и не более того |
|
Сообщ.
#5771
,
|
|
|
|
Цитата IL_Agent @ Однако массив чаров можно записать в виде строки в кавычках. Потому что массив чаров с нулём на конце - это представление строк в С. Ага. Цитата В С++ есть string. Однако литерал "abc" так и остаётся массивом чаров. Конечно. Совместимость ж. Цитата А string - это обёртка, как ни крути. Нет. Это самостоятельный тип. А его внутреннее представление тебя не касается |
|
Сообщ.
#5772
,
|
|
|
|
Цитата MyNameIsIgor @ Нет, это просто соглашение. Для чего оно ? Разве не для работы со строками ? Почему бы "абц" не быть литералом std::string ? Ага, совместимость в ущерб логичности и стройности... |
|
Сообщ.
#5773
,
|
|
|
|
IL_Agent, а на шарпе "abc" какого типа?
|
|
Сообщ.
#5774
,
|
|
|
|
Цитата D_KEY @ Нет. Это самостоятельный тип. А его внутреннее представление тебя не касается ![]() Ну так и в Си я могу объявить точно такой же тип стринг, со своим внутренним представлением, конверторами в/из char*. Однако Cи-строкой так и останется char*... Добавлено Цитата Повстанець @ IL_Agent, а на шарпе "abc" какого типа? System.String |
|
Сообщ.
#5775
,
|
|
|
|
Цитата IL_Agent @ А так:System.String "abc".Length я троечку получу? |