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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2011, 23:31   #1
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию Разделение строки на значения

Здравствуйте помогите разобратся как можно ввести например дату
Код:
12.10.2008
и разбить её на ингеревоские значения
day = 12
mounht = 10
year = 2008
KLOP вне форума Ответить с цитированием
Старый 12.02.2011, 00:01   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Вводим строку(например std::string) ищем позиции '.' с помощью find(), выделяем подстроки, которые находятся между точками с помощью substr() и переводим в int с помощью atoi().
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 12.02.2011, 00:16   #3
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

можно пожалуйста маленький примерчик нечего не понял,как работает функция atoi
вот я разделил сабстрингами стринг

Код:
   day = s.substr(0,2);
   mounht = s.substr(3,2);
   year = s.substr(6,4);
как мне перевести их в интегер требует в функцию char*
KLOP вне форума Ответить с цитированием
Старый 12.02.2011, 00:31   #4
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

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

int main(){
  unsigned uD,uM,uY;
  char c;
  std::stringstream str( std::stringstream::in | std::stringstream::out );
  str << "12.10.2008";
  str >> uD >> c >> uM >> c >> uY;
  std::cout << uD << " " << uM << " " << uY;
}
alex_x_x вне форума Ответить с цитированием
Старый 12.02.2011, 08:53   #5
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
требует в функцию char*
сделай из std::string char* с помощью c_str().
Цитата:
не понял,как работает функция atoi
Код:
std::string date;
int pos = ....;
int day = atoi(date.substr(0,pos).c_str());
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 12.02.2011, 15:11   #6
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

на си кстати можно так
Код:
  unsigned uD, uM, uY;
  if( 3 == sscanf( "12.10.2008", "%u.%u.%u", &uD, &uM, &uY ) ){
    printf( "%u %u %u\n", uD, uM, uY );
  }
alex_x_x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение строки на столбцы. Vasek007 Microsoft Office Excel 14 05.10.2010 18:48
Разделение строки QuestionMark Microsoft Office Excel 2 22.06.2010 15:00
Разделение строки текста alex2read Microsoft Office Excel 10 18.05.2010 10:17
Разделение строки по критерию mephist Microsoft Office Excel 12 27.08.2009 11:07
Разделение строки xTANATOSx Общие вопросы Delphi 3 31.10.2007 21:27