Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/153: Рейтинг темы: голосов - 153, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 26.06.2008
Сообщений: 14

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

13.07.2008, 21:11. Показов 31710. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru