Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
1

Почему к строке LPCSTR не прибавляется другая строка

03.09.2020, 17:17. Показов 501. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Например меня есть код:
C++
1
2
LPCSTR str = "Hell";
str += 'o';
А в str идет какой то мусор. Почему? Или посоветуйте какой нибудь другой тип данных похожий на LPCSTR
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2020, 17:17
Ответы с готовыми решениями:

Почему ТИЦ не прибавляется
Почему ТИЦ может стоять на месте? Я уже и спела и с бубном сплясала ... все равно не прибавляется...

почему не прибавляется месяц и год?
case 8: { MyDate s = new MyDate(); ...

C2664: "BOOL PlaySoundA (LPCSTR,HMODULE,DWORD)": невозможно преобразовать аргумент 1 из unsigned char в LPCSTR
Есть массив, который я пытаюсь проиграть через PlaySoundA https://pastebin.com/dqCvsmmB Пытаюсь...

Прибавляю программно строчку DataGridView, но она прибавляется почему-то в НАЧАЛО таблицы, а не в конец
Чё за шутки? ...Содадим проект, кинем на форму dataGridView, добавим к нему один стобец Добавим...

10
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
03.09.2020, 17:24 2
Цитата Сообщение от WalStrile Посмотреть сообщение
посоветуйте какой нибудь другой тип данных
std::string, std::wstring
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
03.09.2020, 18:28  [ТС] 3
Someone007, не хочу юзать crt

Добавлено через 56 минут
Поможет кто?
0
2832 / 2337 / 707
Регистрация: 29.06.2020
Сообщений: 8,658
03.09.2020, 18:39 4
функция strncat() — добавляет одну строку к другой (с проверкой размера места назначения);
Си строки, заголовочный файл <cstring>

Добавлено через 3 минуты
хотя тут и это не поможет. так как :

C++
1
typedef __nullterminated CONST CHAR *LPCSTR;
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
03.09.2020, 18:40 5
Цитата Сообщение от WalStrile Посмотреть сообщение
Почему к строке LPCSTR не прибавляется другая строка
Почему вы вообще называете LPCSTR "строкой"? LPCSTR - это никакая не строка, это указатель. Даже если ваш LPCSTR указывает на начало строки, это все равно просто указатель.

Это уже не говоря о том, что LPCSTR - это указатель на константную строку. Почему вы пытаетесь изменить константную строку?

Цитата Сообщение от WalStrile Посмотреть сообщение
посоветуйте какой нибудь другой тип данных похожий на LPCSTR
Похожий чем? Константностью? Указательностью?
0
2832 / 2337 / 707
Регистрация: 29.06.2020
Сообщений: 8,658
03.09.2020, 18:41 6
используйте LPSTR и strncat
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.09.2020, 18:43 7
WalStrile, небольшое замечание: LPCSTR не задает строку! А адрес, причем, в данном случае, константный, адрес некой строки! Если по указанному адресу не будет достаточно места в памяти, то "приклеивание" в конце исходной строки другой приведет к записи за пределы исходной строки! Надо использовать нечто такое:
C++
1
char str[64] = "Hell";
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
03.09.2020, 18:53  [ТС] 8
liv, я понял, а если я использую LPCSTR вот так:
C++
1
2
LPCSTR str= GetUserData("Hello");
strcat((char*)str, " World");
GetUserData() возвращает char[260], то есть в str будет достаточно памяти. Если вы сказали, что это константа, то я в принципе меняю значение, да? Правильно ли это? У меня все работает. Могу ли быть краши?
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
03.09.2020, 18:58 9
Цитата Сообщение от WalStrile Посмотреть сообщение
Правильно ли это?
Нет, конечно. GetUserData потому и возвращает const char *, чтобы сказать вам, что менять эти данные вам не позволено.

Цитата Сообщение от WalStrile Посмотреть сообщение
У меня все работает. Могу ли быть краши?
Это ничего не значит. Сегодня "работает", завтра перестанет.
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
03.09.2020, 19:01  [ТС] 10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Похожий чем? Константностью? Указательностью?
Мне нужно типо string
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
03.09.2020, 19:04 11
Цитата Сообщение от WalStrile Посмотреть сообщение
типо string
Его написать тогда придется самостоятельно.
0
03.09.2020, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2020, 19:04
Помогаю со студенческими работами здесь

Почему при записи даты и времени из формы в бд, к времени прибавляется час?
Здравствуйте, при записи даты и времени из формы в бд, к времени прибавляется час, почему так...

int->LPCSTR && char->LPCSTR
Подскажите как преобразовать int в LPCTSTR и char в LPCTSTR?

Почему в функцию передается другая переменная?
Есть программа по односвязным спискам, которые надо объединить в двухсвязные #include &lt;stdio.h&gt; ...

Дана строка. разбить её на две строки, одна должна содержать гласные, другая - согласные
Дана строка. разбить её на две строки, одна должна содержать гласные, другая - согласные....

Почему в VS, когда одновременно открыто несколько программ, пробуешь запустить одну из них, запускается другая?
Глупейший вопрос.. Почему в Visual Studio, когда одновременно открыто несколько программ и...

Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы?
Есть две строки. MSK=&quot;Москва&quot; и from, считанная из текстовика, через getline Для проверки...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru