0 / 0 / 0
Регистрация: 26.06.2008
Сообщений: 14

Преобразование String-строки в число - Как?

13.07.2008, 21:11. Показов 31785. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну ка, люди, подскажите - как преобразовать string-строку(не char[]) в число?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2008, 21:11
Ответы с готовыми решениями:

Преобразование строки в число и наоборот
Привет. Пишу проект в Win32 Console Aplication, столкнулся с проблемой преобразования чисел в строки и наоборот. Имеется следующие: ...

Преобразование String в цвет
Доброго времени суток!!! Как присвоить параметру BackColor значение типа String?

Преобразование double в string
Всем, привет. Такой вопрос, как преобразовать double в string в консоле. Например: double a = -21.23 string s; И сделав так: ...

18
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
14.07.2008, 00:26
c_str
и будет char *
0
0 / 0 / 0
Регистрация: 26.06.2008
Сообщений: 14
14.07.2008, 05:13  [ТС]
Vourhey, читай внимательней вопрос:
"Как преобразовать string-строку ( НЕ char !!!) в число?"
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
15.07.2008, 00:56
Code
1
2
3
basic_istringstream<char, char_traits<char>, allocator<char>> temp_s(str);
int i;
temp_s>>i;
P. S. в вопросе ничего не сказано про невозможность преобразования. Есть проблемы - обращайся к доктору.
0
0 / 0 / 0
Регистрация: 26.06.2008
Сообщений: 14
15.07.2008, 07:42  [ТС]
Извини, глупость написал.
Просто думал, что у string есть какой-нибудь стандартный метод для такого преобразования.
0
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 11
16.07.2008, 10:20
А оператор ato разве не подходит?
C++
1
2
3
double yourDouble = atof(yourString);
int yourInt = atoi(yourString);
long yourLong = atol(yourString);
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
16.07.2008, 12:16
А какой он параметр принимает, может, посмотрим?
0
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 11
16.07.2008, 21:01
Принимает char *. А это что ли так важно? Ведь тебе не приходится передавать ato этот самый char *, ты просто передаёшь ему свою строку, и он возвращает число, а это то, что тебе и требоволось.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
17.07.2008, 00:10
Познакомься с типами и классами для разнообразия. string это не char*. Скромно молчу о том, что строка в string может быть вообще представлена не С-строкой (без нулевого символа в конце. а ato нужна именно С-строка). Мне, что ли, тут писать важен, или не важен тип переменной... Книжку почитай.
Прога твоя даже компилиться не будет. Максимум, что ты можешь:
atoi(str.c_str());
0
1 / 1 / 0
Регистрация: 31.07.2008
Сообщений: 4
31.07.2008, 10:28
Вообще, на уровне асемблера, все просто! Жаль, CLR не позволяет вставлять __ASM. А чтоб из манаджиз в обычную ссылку - это просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct pString
{
 void *type;  // Указатель на определитель типа
 long int l1; // Длина текста + 1
 long int l2; // Длина текста
 wchar_t t;  // Первый символ
};
 
// Функция преобразования из managed type в native !!!!!!!!!
void *toptr(Object^l)
{
 Object ^k = l;
 void **f = (void**)(&k);
 return *f;
}
int main(array<System::String ^> ^args)
{
    String ^p = gcnew String("Hello World! Здраствуй мир!");
 
 void *j = toptr(p);
 pString *str = (pString*)j;
 wchar_t *m = &((*str).t);
 for( int i = 0 ; i < (*str).l2 ; i++, m++ )
  Console::Write(*m);
// if( j != nullptr )
 Console::WriteLine("");
// Console::WriteLine(p);
    return 0;
}
0
Кратк. - сест. тал.
 Аватар для Vit@L
87 / 51 / 4
Регистрация: 13.03.2008
Сообщений: 543
31.07.2008, 14:21
Может я что-то не догоняю, но разве с С++ есть тип String???
По моему там используется символьный массив, к примеру char[50] это и будет строка длинной в 50 символов.
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
31.07.2008, 16:49
Если это то что я думаю поищи тему преобразования из N системы счисления в 10
за точность названия не ручаюсь
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
31.07.2008, 16:59
Lurker ты имеешь ввиду преобразовать по коду буквы из букв в число ?

ЗЫЖ мои скудные познания C++ тоже чтот не припомнят тип строки....
:eek:или у меня амнезия ?????
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
31.07.2008, 20:27
1)строка-массив символов.. строкой я её называю не потому что оно так есть а чисто для удобства.. вроде-бы практике это не противоречит
2)Не по коду буквы а по букве
0
 Аватар для Osanve
2 / 2 / 0
Регистрация: 03.08.2008
Сообщений: 12
04.08.2008, 00:11
Такого типа как string в C++ действительно нет, но вместо него можно использовать символьный массив (char str[80]; // массив объемом в 80 символов), а его можно использовать уже в выше указаной функции.

Привожу пример из своего кода:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
char str[80]; // инициализация массива для строки
double string; // инициализация вещественной переменной для перевода
/* ... */
cin >> str; // запрос симаольной строки с дальнейшей передачей в массив
string=atof(str); // перевод символьного массива в число
/* ... */
return 0;
}
P.S. Маленькая проблемка в том, что переводятся в число только те цифры массива, которые находятся до других типов символов, а те которые после или между ними не переводятся.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.08.2008, 12:38
Тип string есть. Загляните в string.h. Этот класс там объявлен.

P. S. см. сообщение мое сообщение от 17.07
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
04.08.2008, 12:57
Не помню как это называется в C ( *.h ) модуль, или как его там еще назвать - но видимо этот "модуль" сделан специально под класс string (для удобства работы со строками), которые по умолчанию в С отсутствует, в отличие от Delphi, в котором он присутствует без подключения каких либо внешних модулей в самой основе языка...

ЗЫЖ: класс - эт значит мы будем работать со строковыми обьектами, а в Delphi/Pascal - строка идет переменной ...

Vourhey - поправь меня если я не прав !!!
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.08.2008, 13:05
Факт то, что класс string есть. Более того, о присутствии его в языке С++ говорить совершенно нормально, так как, эта библиотека идет вместе с компилятором.
А иначе, можно сказать, что и всех виндовых структур нет, так как, это надстройка над int, double и прочими. А еще time и его структуры сделанные специально для работы со временем, тоже нет таких типов (Тогда могу сказать, что в С++ нет типа time_t )... А еще, шаблонов тоже нет. Но это глупо, не правда ли? Тогда давайте обо всех библиотечных типах говорить, что их нет.

Такой тип есть. Он идет даже в стандартной библиотеке. И он отличается от char[]. Я уже писал выше чем.

P. S. По-моему в этой теме мы не обсуждаем об объектах и переменных, не так ли? Работает мы с объектом, или с переменной не отменяет существования класса string
Даже когда он cout'ом выводит строку он уже работает с объектом (ostream). И что? Кого-то это тревожит?
Кстати, в памяти объекты от переменных "простых" типов мало чем отличаются.
0
1 / 1 / 0
Регистрация: 31.07.2008
Сообщений: 4
22.08.2008, 06:10
Если речь идет об managed .NET String, то этот тип, как и все остальные, обладает интерфейсом IConvertible и преобразование из String str выглядит очень просто -
int i = Convert::ToInt32( str );

Все исключения можно поймать с помощью try - catch, примеры есть в MSDN
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2008, 06:10
Помогаю со студенческими работами здесь

Преобразование строки в число в приложении для Windows 8.1. TextBox. Platform::String ^
Добрый день! Не давно я решил перейти на программирование современных приложений под Windows 8.1. До этого хорошо создавал простые...

Преобразование string в шестнадцатеричное число
Есть string str = &quot;0xffffff&quot; Подскажите, пожалуйста, как преобразовать эту строку в int?

Преобразование string в двоичное число
Здравствуйте! Такая проблема: На входе имеем строку, например 0001001 необходимо пребразовать её в двоичное число, чтобы потом...

Преобразование строки в число, не могу придумать как решить
Всем доброго времени суток. У меня не получается решить задачу по преобразованию строки в число. Дано число со знаком (максимум 8...

Преобразование русскоязычного числительного (string) в число (int)
Добрый день, коллеги. Возникла нетривиальная задача преобразования числительного, написанного по-русски, в, собственно, число. ...


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

Или воспользуйтесь поиском по форуму:
19
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru