Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
#1

Не работает += char* - C++

26.02.2013, 19:05. Просмотров 342. Ответов 8
Метки нет (Все метки)

Нужно использовать код вида:
C#
1
2
3
char* strID = "ABC";
strID += "DEF";
strID += "xyz";
Суть задачи после отметания чекбоксов переменная будет увеличиваться, т.е. дописывать нужный текст, поэтому нужно как то прибавлять к ней типа как в строке чтобы после например верхних манипуляций получилось что char* strID = "ABCDEFxyz";
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 19:05     Не работает += char*
Посмотрите здесь:

Работает с Int, а с char отказывается - C++
#include <stdio.h> main() { char i; i=func1('t','p'); printf("%c", i); } func1(char p,char f) { char d;

С char* работает, а с string нет. - C++
Как можно сделать так чтобы использовать вместо char* - string. Добавляя #include <string> string name; все равно ошибка...

Не пойму как работает char - C++
Выдает не символ, а сивол и число!!Это я уже пробую явное приведение. Кто поопытней, поясните!! #include<iostream> #include<conio.h> ...

Не работает map<char*, Image*> - C++
class NPC { map&lt;char*, Image*&gt; images; public: void InitImg(char* id, Image* img) { images = img; } virtual void...

Как работает оператор char *? - C++
Как работает оператор char *! Можете описать его принцип работы! Спасибо заранее!

Не работает код сравнения char - C++
Здравствуйте, сделал такой код, но в итоге ничего не выводит : void Searchss () { int plowa; int plowa2; char rayon; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 377
26.02.2013, 19:15     Не работает += char* #2
Может вам нужно использовать:

C++
1
сhar *strcat(char *s1,const char *s2); Добавляет строку s2 к строке s1. Первый символ строки s2 записывается поверх завершающего нулевого символа строки s1. Возвращает значение s1.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
26.02.2013, 19:21     Не работает += char* #3
Только strID должен быть не указателем на константный литерал, а массивом достаточного размера.
C++
1
2
3
char strID[10] = "ABC";
strcat(strID,"DEF");
strcat(strID,"xyz");
Ну или std::string используйте.
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
26.02.2013, 20:40  [ТС]     Не работает += char* #4
Для моей задачи массив не должен иметь фиксированный размер или пустые значения.
а по методу pEntity ощибка
Миниатюры
Не работает += char*  
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
26.02.2013, 20:48  [ТС]     Не работает += char* #5
А после того как стер const от s2 ошибка исчезла и прога запустилась, но при выводе переменные не меняються.
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
26.02.2013, 23:26     Не работает += char* #6
Цитата Сообщение от beats Посмотреть сообщение
фиксированный размер или пустые значения
Это как вообще?
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
27.02.2013, 06:06     Не работает += char* #7
Цитата Сообщение от beats Посмотреть сообщение
а по методу pEntity ощибка
Так strcat надо не объявлять, а вызывать (как вызывать - у меня выше написано).

Цитата Сообщение от beats Посмотреть сообщение
Для моей задачи массив не должен иметь фиксированный размер
Тогда повторюсь, используйте тип std::string:
C++
1
2
3
std::string strID = "ABC";
strID += "DEF";
strID += "xyz";
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
27.02.2013, 06:41     Не работает += char* #8
если все-таки нужен чистый си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
#include <malloc.h>
 
char *concat_string(const char *s1, const char *s2) {
    int l1 = strlen(s1), l2 = strlen(s2);
    char *s = malloc(l1 + l2 + 1);
    memcpy(s, s1, l1);
    memcpy((char*)((int)s + l1), s2, l2);
    s[l1 + l2] = 0;
    return s;
}
 
int main() {
    char *s1 = "str1";
    char *s2 = "str2";
    char *s = concat_string(s1, s2);
    printf("%s\n", s);
    return 0;
}
но код не очень эффективный, также возможны утечки памяти, если сложений будет много (нужно не забывать очищать память строк s1 и s2). есть также вариант с realloc, но он у меня сходу не заработал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 22:39     Не работает += char*
Еще ссылки по теме:

srand не работает и при копировании char выдает билиберду - C++
задание: создать класс в котором будет 3 поля, гетеры и сеттеры для них поля: 1) автор книги 2) в какой области она 3) кол-во стрнц. ...

Перевод из int в char* внутри функции работает, а если вернуть строку то нет - C++
Надо перевесит int в char* в методе класса, и вернуть char*. Перепробовал кучу всего результат 1 и тот же. boss.cpp char*...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

функция возвращает массив слов, содержащихся в текстовом сообщении char* Words(char *s) - C++
Стоит такая задача: функция должна возвратить массив слов, содержащихся в текстовом сообщении char* Words(char *s) Как это можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.02.2013, 22:39  [ТС]     Не работает += char* #9
Вариант с молком побывал, на ++ не работает.
стринг мне не нужны. тут спец. задача.
Сделал я на данный момент вот как(что хоть как то приближает к решению):
C++
1
2
3
4
5
6
7
String^ s = gcnew String("");
s += "DEF";
s += "xyz";
   IntPtr ip = Marshal::StringToHGlobalAnsi(s);
   const char* str = static_cast<const char*>(ip.ToPointer());
 
textBox1->Text = gcnew System::String(str);
И результат выходит правильный, но в последующем коде rand не работает с этим чаром как положено((
Yandex
Объявления
28.02.2013, 22:39     Не работает += char*
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru