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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование строки в строковую константу 
V
    Опции темы
Therion
Дата 23.5.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите алгоритм преобразования 
Код
const UINT32 kCounterKey = 'COUN';
 в строку и наоборот.
Заранее благодарен.

Это сообщение отредактировал(а) Therion - 23.5.2008, 10:37
PM MAIL   Вверх
Alek86
Дата 23.5.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



а чего ты этой строчкой сделал?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Fazil6
Дата 23.5.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Therion @  23.5.2008,  10:35 Найти цитируемый пост)
Подскажите алгоритм преобразования 

бред какой-то
PM MAIL   Вверх
Therion
Дата 23.5.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пишется обертка для одной функции на C++ для программистов на С#. C++ функция в качестве параметра принимает число (но его всегда для удобства чтения кода вводят как строковую константу 'COUN'). В С# я не могу передать в качестве параметра строковую константу, могу только число (что не подходит). Решил что бы программисты на C# писали строчку не длинней 4-х символов, которая бы переобразовывалась в строковую константу и передавалась С++ функцие. Нужна и обратная операция, так как строковая константа используется как ключ в функцияъ типа GetData/SetData.

Добавлено через 4 минуты и 13 секунд
Цитата(Fazil6 @ 23.5.2008,  10:46)
Цитата(Therion @  23.5.2008,  10:35 Найти цитируемый пост)
Подскажите алгоритм преобразования 

бред какой-то

Возможно. Но пока что ищу решение и это первое что приходит в голову. Если есть более элегентные предложения буду рад помощи.
PM MAIL   Вверх
vinter
Дата 23.5.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Therion @  23.5.2008,  11:53 Найти цитируемый пост)
Возможно. Но пока что ищу решение и это первое что приходит в голову. Если есть более элегентные предложения буду рад помощи.

это не решение а ерунда какая-то

Цитата(Therion @  23.5.2008,  11:35 Найти цитируемый пост)
 UINT32

тип для целых чисел.
Цитата(Therion @  23.5.2008,  11:35 Найти цитируемый пост)
COUN

строка
Цитата(Therion @  23.5.2008,  11:35 Найти цитируемый пост)
''

кавычки для одного символа
как по твоему все это помещается в одну логическую строку?


--------------------
Мой блог
PM MAIL WWW   Вверх
Therion
Дата 23.5.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если вы попробуете такой код 
Код
std::cout << 'COUN' << std::endl;
, то увидите что выводится число 1129272654.
PM MAIL   Вверх
Ulysses4j
Дата 23.5.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Какое-то сбивчивое объяснение. Если в строке типа char* записаны циферки, а хочется получить соответствуещее целое, то
Код
const UINT32 kCounterKey = boost::lexical_cast<unsigned int>(str);

Ну или писать велосипеды с istring_stream:
Код
istring_stream is(str);
const UINT32 kCounterKey;
is >> kCounterKey;

И там и там ловить исключения, разумеется.

Добавлено через 1 минуту и 31 секунду
Цитата(Therion @ 23.5.2008,  11:17)
Если вы попробуете такой код 
Код
std::cout << 'COUN' << std::endl;
, то увидите что выводится число 1129272654.

Так то значение указателя, который смотрит на литерал 'COUN' где-то в области данных программы, выведется.

Добавлено через 13 минут и 59 секунд
Ой, и кавычки неправильные, точно vinter сказал (многоязыковость съедает мозг).


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


Шустрый
*


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

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



Понял что так не стоит делать. Не буду использовать в качестве ключей строковые литералы. Спасибо всем  smile 
PM MAIL   Вверх
Alek86
Дата 23.5.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(vinter @  23.5.2008,  11:09 Найти цитируемый пост)

COUN
строка
''
кавычки для одного символа

самый прикол, что comeau
Код
int main() {
 int i = 'dsds';
}

хавает

Добавлено через 56 секунд
но что это может значить - не представляю

Это сообщение отредактировал(а) Alek86 - 23.5.2008, 11:38


--------------------
user posted image    user posted image
PM MAIL   Вверх
Therion
Дата 23.5.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Конечно хавает. И мне в наследство перешла либа где это используется по всему коду.
PM MAIL   Вверх
Rififi
Дата 23.5.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



такая запись - quick-аналог для
#define make_long(a,b,c,d) ((a)<<24)|((b)<<16)|(©<<8)|(d)

то есть

сonst long id1 = '1234';
const long id2 = make_long('1', '2', '3', '4');

id1 равно id2

насколько легально - не в курсе, лень в Стандарте искать, но раз Комо съедает...
PM MAIL   Вверх
mes
Дата 23.5.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 144
Всего: 250



Цитата(Therion @  23.5.2008,  10:35 Найти цитируемый пост)
Подскажите алгоритм преобразования 
код C++
const UINT32 kCounterKey = 'COUN';


Цитата(Therion @  23.5.2008,  10:53 Найти цитируемый пост)
 C++ функция в качестве параметра принимает число (но его всегда для удобства чтения кода вводят как строковую константу 'COUN'). В С# я не могу передать в качестве параметра строковую константу, могу только число (что не подходит). 


почему не подходит передaвать число ?? 'COUN' - оно и есть число  (и не в коем случае не строка)




--------------------
PM MAIL WWW   Вверх
Therion
Дата 23.5.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Для более удобного чтения кода. Намного проще понять для чего ключ 'COUN' (от counter) чем помнить что какое число значит.
PM MAIL   Вверх
mes
Дата 23.5.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 144
Всего: 250



Цитата(Therion @  23.5.2008,  16:29 Найти цитируемый пост)
Для более удобного чтения кода. Намного проще понять для чего ключ 'COUN' (от counter) чем помнить что какое число значит. 


неужели на шарпе такое не возможно ?
Цитата(Rififi @  23.5.2008,  13:06 Найти цитируемый пост)
const long id2 = make_long('1', '2', '3', '4');


второй вариант использовать енумы 



--------------------
PM MAIL WWW   Вверх
Rififi
Дата 23.5.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



Цитата(Therion @  23.5.2008,  16:29 Найти цитируемый пост)
Намного проще понять для чего ключ 'COUN' (от counter)

а так еще проще:
enum Keys { Counter };
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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