![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
skrip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
какой символ определяет конец строки
std::string st; st[0]='x'; st[2]='y'; st[1]='z'; st[3]='\0'; std::cout << st; выводит пустую строку; std::cout << st[0] выведит 'x', аналогично st[1] и st[2]. Это сообщение отредактировал(а) skrip - 8.8.2006, 10:30 |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
st="xyz";
так нельзя? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
skrip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
нужно именно посимвольно как я написал
![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
тогда имхо сначало надо выделить память под переменную может это юзать
str.resize(4); а уж потом посимвольно Добавлено @ 11:52
У меня работает -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ну или
string st; st.push_back('1'); st.push_back('2'); st.push_back('3'); и не хай с++ сам длину строки высчитывает. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
ну или
![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
skrip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
всем спасибо
я придумал нижний способ просто хотел узнать символ конца строки string Это сообщение отредактировал(а) skrip - 8.8.2006, 17:20 |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
skrip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
ну а тогда почему вот это не работает?
std::string st; st[0]='x'; st[2]='y'; st[1]='z'; st[3]='\0'; оператор << значит подругому определяет конец строки string |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
потому что в этой строке указывается что будет переменая типа стринг но нулевой длины, и сам понимаешь что будет при передаче данных в неинициализированый массив данных PS тип стринг это динамическая строка, в простейшем случае типа char -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
так что std::string - это и есть частный случай -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
не совсем рабочий пример ![]() как указали выше нужен ресайз. оператор [] возвращает адрес и не более того, присваивание в этом случае не влечет за собой изменение каких-либо переменных в std::string. поэтому в данном случае нужен след. вывод:
|
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Он возвращает ссылку, а это уже о-го-го более того, и что самое интересное этого достаточно ![]() В идеале и этот код и все предыдущие должны работать идентично. |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
В идеале, для st[0]='x'; st[2]='y'; st[1]='z'; st[3]='\0'; нужно пользовать vector ![]() И где сказано, что данные в std::string обязаны оканчиваться "\0" и располагаться последовательно? А вот, как раз str.c_str() и возвращает Си-строку, которая заканчивается на "\0". А то, что не срабатывает std::cout << st; - лишь тому доказательство ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |