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

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

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

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

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

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

Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*" - C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <cstring> using namespace std; int one(char fam) //...

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

Не работает 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++
Выдает не символ, а сивол и число!!Это я уже пробую явное приведение. Кто поопытней, поясните!! #include&lt;iostream&gt; #include&lt;conio.h&gt; ...

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

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

8
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 401
26.02.2013, 19:15 #2
Может вам нужно использовать:

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

Цитата Сообщение от beats Посмотреть сообщение
Для моей задачи массив не должен иметь фиксированный размер
Тогда повторюсь, используйте тип std::string:
C++
1
2
3
std::string strID = "ABC";
strID += "DEF";
strID += "xyz";
0
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
27.02.2013, 06:41 #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, но он у меня сходу не заработал.
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
28.02.2013, 22:39  [ТС] #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 не работает с этим чаром как положено((
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 22:39
Привет! Вот еще темы с ответами:

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

Не работает шаблонная функция с типом char - C++
Как реализовать шаблон функции для калькулятора для дробей с типом &lt;char&gt;?А то вместо чисел выводатся символы в дробях. С другими типами...

Неправильно работает сортировка с char массивами - C++
Помогите, не работает вторая сортировка.void Sort_salary(List **begin) { List *t = NULL, *t1, *r; if ((*begin)-&gt;next-&gt;next == NULL) ...

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


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
28.02.2013, 22:39
Ответ Создать тему
Опции темы

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