Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки 
:(
    Опции темы
Ockonal
Дата 28.1.2008, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Здравствуйте. Вот делаю: 

int StrInt = strlen( StringOne );
char *StringTwo = new char[StrInt];
Есть у меня строка.. StringOne. По ней создаю StringTwo;
Дальше в коде дописываю с помощью strcat( StringTwo, "Datas" );
Но в конце, когда вывожу StringTwo, У меня вначале куча знаков.. Что это может быть..
И ещё.. В одном месте мне в StringTwo нужно дописать число.. 
int b = 999;
strcat( StringTwo, b );
Но так нельзя smile Как конвертировать b в char*?
Пробывал:
char tmp[2];
tmp[1] = '\0';
tmp[0] = b;
strcat( StringTwo, tmp );
Но Выводит иероглиф )

--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Maka6er
Дата 28.1.2008, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



Вы память под строку выделили но не инициализировали её — отсюда и непредвиденный результат (вначале куча знаков). Попробуйте так:
Код

int StrInt = strlen( StringOne );
char *StringTwo = new char[StrInt];
strcpy(StringTwo,"");


А про то как int в *char здесь: http://forum.vingrad.ru/forum/topic-189260...0%BA%D0%B8.html
PM MAIL   Вверх
JackYF
Дата 28.1.2008, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Ockonal, и используйте кнопку "Код", пожалуйста, когда постите. Всем легче будет.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ulysses4j
Дата 28.1.2008, 02:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

Репутация: 4
Всего: 10



Цитата(Maka6er @ 28.1.2008,  01:58)
Код

/*...*/
strcpy(StringTwo,"");

Ну, это немножко высокопарно выглядит, учитывая что просто 0-байт нужен. Ockonal, все валидные С-строки должны завершаться 0-байтом. Т.о., чтобы получить строку, способную хранить до n-знаков, и пригодную для использования с функциями из <cstring> (<string.h>), нужно сделать так:
Код

char * str = new char[n+1];
str[0] = 0; // эквивалентно strcpy(str,"");


Это сообщение отредактировал(а) Ulysses4j - 28.1.2008, 02:50


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
NiJazz
Дата 28.1.2008, 09:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



А можно так:
Код

char str[n+1] = {0};

Если строка небольшая, то в данном случае и о delete заботиться не нужно. 

PM MAIL   Вверх
Mayk
Дата 28.1.2008, 10:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(NiJazz @  28.1.2008,  13:18 Найти цитируемый пост)
1:
    
char str[n+1] = {0};

Если строка небольшая, то в данном случае и о delete заботиться не нужно. 


а ещё  из альтернатив есть такая штука как std::string. 



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
just_geek
Дата 28.1.2008, 10:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 2
Всего: 10



погляди в сторону itoa
PM MAIL   Вверх
Mayk
Дата 28.1.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



ещё раз пару слов про альтернативы дело не в том что я зануда, а в том что  мне надо набить счетчик сообщений

Код

std::ostringstream oss;
oss << StringTwo << 1024;

std::string resultString = oss.str();



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ockonal
Дата 28.1.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Всем кто ответил - БОЛЬШОЕ СПАСИБО smile Приму во внимание все посты. Тема закрыта.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.