powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Преобразование стринга в unsigned long
17 сообщений из 17, страница 1 из 1
Преобразование стринга в unsigned long
    #33751634
Фотография Rin@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, подскажите, пожалуйста. Спасибо заранее.
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33751691
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rin@tКоллеги, подскажите, пожалуйста. Спасибо заранее.

Можно преобразовать в long long (atoll), а потом привести к типу unsigned long
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33751747
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
unsigned long ul=labs(atol(SomeString));
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33751851
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K.
Код: plaintext
1.
unsigned long ul=labs(atol(SomeString));


При числах, больших signed long atol врядли зделает его отрицательным, а если и сделает, то labs вернет совсем другое, чем было в SomeString
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33751984
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
strtoul
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752108
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhПри числах, больших signed long atol врядли зделает его отрицательным, а если и сделает, то labs вернет совсем другое, чем было в SomeString
Да, точно, всё-равно ведь atol long вернёт... тогда уж так:
Код: plaintext
1.
unsigned long ul=fabs(atof(SomeString));
ну или strtoul, как уже было сказано...

А насчёт atoll - функция довольно "свежая" и не везде имеется (Borland CB6, например, о ней не знает :) )
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752158
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то работают все варианты ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int main(){
  const char* s = "4000000000";
  
  unsigned long a = atol(s);
  std::cout << a << std::endl;
  
  char         *ss;
  unsigned long b = strtoul(s, &ss,  10 );
  std::cout << b << std::endl;

  unsigned long c = _variant_t(s);
  std::cout << c << std::endl;
  
  return  0 ;
}
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752214
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZrenBy
Если стринг будет "отрицательным", то atol не подойдёт, но автору топика это, по-моему, уже всё равно - ушёл в партизаны...
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752255
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K.Если стринг будет "отрицательным", то atol не подойдёт, но автору топика это, по-моему, уже всё равно - ушёл в партизаны...

Отрицательный unsigned - это как ?
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752284
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZrenBy Dmitrii K.Если стринг будет "отрицательным", то atol не подойдёт, но автору топика это, по-моему, уже всё равно - ушёл в партизаны...

Отрицательный unsigned - это как ?
Я же про стринг написал...
Потенциально, преобразуемая строка может быть и со знаком минус, тогда для преообразования её к unsigned логично будет взять абсолютное значение, а atol в таком случае выдаст не тот результат...
Попробуйте в вашем примере поставить "-4000000000"...
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752306
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K.Попробуйте в вашем примере поставить "-4000000000"...

Естественно, попробовал, перед тем как постить - все разумно, особенно третий вариант :)
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752340
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZrenByЕстественно, попробовал, перед тем как постить
И что получается по:
unsigned long ul=atol("-4000000000");
?
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752355
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие отрицательные числа? Преобразовать надо в unsigned long. У вас 4 миллиарда и -4 миллиарда, это одно число. Если строка может быть "отрицательной", то в беззнаковый тип ее приводить нельзя. Отрицательное число в строке - ошибочная ситуация и преобразование в этом случае не имеет смысла
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752390
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K.И что получается по:
unsigned long ul=atol("-4000000000");
?

То же, что и по
Код: plaintext
1.
unsigned long b = strtoul(s, &ss,  10 );

Я же не даром специально отметил 3-ий вариант
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752402
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ZrenByЯ же не даром специально отметил 3-ий вариант[/quot]
Проверял на BCB, с сожалению он не все функции VC++ поддерживает, в т.ч. и _variant_t :(
Ну да ладно, думаю, автор вопроса с ним уже разобрался :)
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752411
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K.[quot ZrenByЯ же не даром специально отметил 3-ий вариант
Проверял на BCB, с сожалению он не все функции VC++ поддерживает, в т.ч. и _variant_t :(
Ну да ладно, думаю, автор вопроса с ним уже разобрался :)[/quot]

Автору вопроса, вообще, наверное, плевать на такие ситуации.
...
Рейтинг: 0 / 0
Преобразование стринга в unsigned long
    #33752426
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhАвтору вопроса, вообще, наверное, плевать на такие ситуации.
Но история об этом умалчивает... )
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Преобразование стринга в unsigned long
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]