Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 ... 5 6 7 [8]   Вниз
  Печать  
Автор Тема: Эврика  (Прочитано 204474 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #210 : 10-09-2010 07:31 » 

CString принимает аргументы через ...
соответственно тип аргументов он выводит из описания формата, в данном случае из "%s"
соответственно делается преобразование std::string * -> void* -> char *
string в первом байте может запросто хранить 0, это служебные данные
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #211 : 10-09-2010 07:40 » 

Антон (LogRus), никто ж не спорит, весь косяк в том, что предупреждения от компилятора нету ))
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #212 : 10-09-2010 07:43 » 

Алексей1153++, и не будет, компилятор не обязан парсить строку "%s" и понимать, что разработчик налажал в этой строке, тут нужно понимать, что передавая данные через ... ты добровольно расстаёшься с инфой о типе и компайлер умывает руки Улыбаюсь я его понимаю
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #213 : 10-09-2010 08:03 » 

Просто я после долгого общения с const char* и CString не обратил внимания на эту капризную особенность std::string Улыбаюсь)
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #214 : 10-09-2010 08:14 » 

Это не капризная особенность std::string это грязный хак в CString Улыбаюсь, который заточен именно под это
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #215 : 10-09-2010 08:22 » 

та CString никуда не заточен, он всего лишь набор функций для объекта (const char*) . Простой, как валенок Улыбаюсь
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #216 : 10-09-2010 08:27 » 

Алексей1153++, ты еще скажи он длину не хранит Улыбаюсь
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #217 : 10-09-2010 08:36 » 

неть, замечен в подобном не был ))

Код:
sizeof(CString)==4
что может быть красноречивее
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #218 : 10-09-2010 08:37 » 

Какая гадость, то-то у меня отторжение к этому классу Улыбаюсь
Записан

Странно всё это....
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #219 : 10-09-2010 08:37 » 

Если вы говорите про CString ранних версий, то да. Но в последних версиях он уже совсем другое.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #220 : 10-09-2010 08:39 » 

у меня они вот так определены в исходниках
Код:
typedef ATL::CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #221 : 10-09-2010 08:43 » 

всю жизни стараюсь избегать всего кроме std::string - в стандарте только эти строки Улыбаюсь
Записан

Странно всё это....
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #222 : 10-09-2010 08:52 » 

К сожалению не все MFC объекты знают про это, и ждут CString.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #223 : 10-09-2010 08:53 » 

Скинь оковы MFC Улыбаюсь вступай в ряды чистого C++
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #224 : 10-09-2010 09:03 » 

std::string не всегда удобен. В отличие от CString
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #225 : 10-09-2010 09:06 » 

Антон, авантюрист. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #226 : 10-09-2010 16:00 » 

обнаружил приятную особенность консоли - можно перетащить файл, тогда сразу полный путь, да ещё сразу и в кавычках вставится ) Гораздо удобнее, чем через буфер или вручную
Записан

Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #227 : 11-09-2010 18:12 » 

Алексей1153++, настоящие_программисты_не_пользуются_пробелом)
в смысле, мышкой - оно ж долго тащить то?! да и промазать можно...пролетая над корзиной)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #228 : 12-09-2010 06:39 » 

Алексей1153++, а если в пути нет пробелов, то без кавычек Жаль
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #229 : 12-09-2010 07:37 » 

1) Алексей1153++, настоящие_программисты_не_пользуются_пробелом)

2) в смысле, мышкой - оно ж долго тащить то?!

3)  да и промазать можно...пролетая над корзиной)

все три утверждения/вопроса - непонятны  Улыбаюсь Особенно , если присмотреться к названию папки "Program Files". А про мышку и корзину - это уж я прям не знаю, как надо выпить )))

Dimka, дык, он автоматом вставляет кавычки, если их нужно. Если не нужно - то и не надо кавычек Улыбаюсь
« Последнее редактирование: 12-09-2010 07:39 от Алексей1153++ » Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #230 : 12-09-2010 12:48 » 

Ну впринципе пробелы можно экранизировать. Что bash и делает в таком случае Улыбаюсь Только в виндовс это будет коряво конечно выглядеть.  Лучше уж кавычки.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #231 : 12-09-2010 13:13 » 

Finch, в смысле "экранизировать" ? Если имел в виду экранировать - то вряд ли это возвожно в виндовой консоли, или покажи, как )
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #232 : 12-09-2010 13:27 » 

Сейчас например я эксперементировал Улыбаюсь
Код:
mplayer /media/film/Comedy/Who\ Am\ I\ \[RG\ CVC\].mp4
Правда это получилось не при копировании, а при автозаполнении. При копировании он честно берет в одинарные скобки. Это не виндовая консоль Улыбаюсь Там скорее всего придется стругать кучу обратных слешей. Так как они будут конфликтовать.
« Последнее редактирование: 12-09-2010 13:29 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #233 : 13-09-2010 07:02 » 

Виндовая консоль вроде тоже нормально заполняет
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #234 : 07-02-2012 06:23 » new

опять таки наступил на грабли с пропущенным #pragma pack(pop)

по запарке написал так
#pragma pop()

что компилятор проглотил и не подавился.  

Так вот, вдруг нашёл преотличный способ нахождения непарных прагм (при условии, что они всегда таким образом отформатированы - "#pragma_пробел_pack")

делаем поиск по проекту строки "#pragma pack"

и смотрим в логе, где будет непарная прагма:



И это всегда должно сработать.

* pushpop.PNG (16.51 Кб - загружено 1450 раз.)
Записан

Страниц: 1 ... 5 6 7 [8]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines