Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2008, 06:36   #1
Avaj
 
Регистрация: 14.07.2008
Сообщений: 3
Вопрос Пребразовать string-строку в число и обратно. - Как?

Подскажите-ка, как преобразовать string-строку ( не char! ) в число, и обратно?
Avaj вне форума Ответить с цитированием
Старый 14.07.2008, 08:51   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Первое что на ум пришло (ум еще заспанный)

Код:
string s1 = "";

    int s = 1000;
	int t = 0;
	
	char *ch = new char[10];	
	s1 = itoa(s, ch, 10);
		
	char *temp = new char[s1.length()];
	for(int i = 0; i < s1.length(); i++)
	{
		temp[i] = s1[i];
	}
	
	t  = atoi(temp);

	cout << "int = " << t << " " << "String = " << s1;

	delete [] ch;
	delete [] temp;
		
	getch();
merax вне форума Ответить с цитированием
Старый 14.07.2008, 16:50   #3
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Код:
#include <iostream>
#include <string>
#include <sstream>

int main()
{
  int i = 987654321;
  // int to std::string
  std::ostringstream oss;
  oss << i;
  std::string s = oss.str();
  std::cout << s << std::endl;

  s = "123456789";
  // std::string to int
  std::istringstream iss(s);
  iss >> i;
  std::cout << i << std::endl;
}
А если еще перегрузить операторы >> и <<, то вообще сказка:

Код:
#include <iostream>
#include <string>
#include <sstream>

// std::string to int
inline void operator>>(const std::string &s, int &i)
{
  std::istringstream ss(s);
  ss >> i;
}
inline void operator<<(int &i, const std::string &s) { s >> i; }

// int to std::string
inline void operator>>(const int i, std::string &s)
{
  std::ostringstream ss;
  ss << i;
  s = ss.str();
}
inline void operator<<(std::string &s, const int i) { i >> s; }


int main()
{
  std::string s;

  int i = 987654321;
  s << i; // int to str
  std::cout << s << std::endl;

  s = "123456789";
  s >> i; // str to int
  std::cout << i << std::endl;
}
filosof_x86 вне форума Ответить с цитированием
Старый 14.07.2008, 17:17   #4
Avaj
 
Регистрация: 14.07.2008
Сообщений: 3
По умолчанию

А может быть у string есть какой-нить стандартный метод для этого?
Avaj вне форума Ответить с цитированием
Старый 17.07.2008, 12:31   #5
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию Как перевести - очень просто

Пример:
Код:
{
  AnsiString a1 = "1234.56";
  long b3 = 60;
  string a2;
  PChar a3;
  float b1;
  int b2;
  b1 = ( float )a1;
  a2 = ( string )b3;
  a3 = ( PChar )b3;
  b2 = ( int )a2;
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 09.02.2009 в 22:10.
Maks1978 вне форума Ответить с цитированием
Старый 17.07.2008, 21:09   #6
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Maks1978 Посмотреть сообщение
Пример:
{
AnsiString a1 = "1234.56";
long b3 = 60;
string a2;
PChar a3;
float b1;
int b2;
b1 = ( float )a1;
a2 = ( string )b3;
a3 = ( PChar )b3;
b2 = ( int )a2;

}
AnsiString – это как я понял из VCL, который есть далекооо не везде. std::string != AnsiString

string – это как я понял std::string? В стандартной библиотеке нет функций, которые бы позволяли бы переводить std::string в int и обратно.
filosof_x86 вне форума Ответить с цитированием
Старый 20.07.2008, 11:02   #7
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию

Надо спросить у Avaj-а: Есть ли у него VCL? Если есть, то вот про методы он спрашивал:
Код:
{
  AnsiString a1 = "1234.56";
  long b3 = 60;
  String a2;
  PChar a3;
  double b1;
  float b22;
  b22 = b1;
  b1 = b22;
  int b2;
  b22 = a1.ToDouble();
  a2 = ( String )b3;
  a3 = ( PChar )b3;
  b2 = a2.ToInt();
  a2 = a1;
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 09.02.2009 в 22:10.
Maks1978 вне форума Ответить с цитированием
Старый 20.07.2008, 13:04   #8
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

2Maks1978. Ты вообще разбираешься в том о чем говоришь? Что такое VCL например? VCL разработана компанией Borland и преобразование там проходит с помощью функций IntToStr и StrToInt. А что пишеть ты это чистой воды Framework.
merax вне форума Ответить с цитированием
Старый 20.07.2008, 22:14   #9
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию

merax! Всё что написал, проверил перед этим в Borland C++ Builder 6!
Maks1978 вне форума Ответить с цитированием
Старый 20.07.2008, 22:19   #10
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Согласен. Беру свои слова обратно. Счас установил проверил. Но все же вопрос явно не из разряда визуального программирования.
merax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из строки в число и обратно AsmBeginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 22.05.2010 18:49
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки urgu_st Помощь студентам 13 23.10.2007 09:14
перевести число, находящееся в string, в integer? andrey4623 Паскаль, Turbo Pascal, PascalABC.NET 4 23.06.2007 00:32
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13