데이터와 시간을 지정하는 서버에서 string such as "2011-08-12,02:06:30"
을 받고 있습니다.정수를 문자열로 변환하는 방법
그러나
int year = 2011, month =08, day = 14, h = 02, min = 06, sec=30
처럼 INT 저장으로 변환하는 방법에 대해 설명합니다.
데이터와 시간을 지정하는 서버에서 string such as "2011-08-12,02:06:30"
을 받고 있습니다.정수를 문자열로 변환하는 방법
그러나
int year = 2011, month =08, day = 14, h = 02, min = 06, sec=30
처럼 INT 저장으로 변환하는 방법에 대해 설명합니다.
++.
#include <iostream>
// for use of class stringstream
#include <sstream>
using namespace std;
int main()
{
string str = "2011-08-12,02:06:30";
stringstream ss(str);
int year, month, day, h, min, sec;
ss >> year;
ss.ignore(str.length(), '-');
ss >> month;
ss.ignore(str.length(), '-');
ss >> day;
ss.ignore(str.length(), ',');
ss >> h;
ss.ignore(str.length(), ':');
ss >> min;
ss.ignore(str.length(), ':');
ss >> sec;
// prints 2011 8 12 2 6 30
cout << year << " " << month << " " << day << " " << h << " " << min << " " << sec << " ";
}
감사합니다. 일했습니다. – SPB
sscanf 함수를 사용하면 많은 도움이됩니다.
int year, month, day, h, min, sec;
char * data = "2011-08-12,02:06:30";
sscanf(data, "%d-%d-%d,%d:%d:%d", &year, &month, &day, &h, &min, &sec);
+1 C 형식 문자열 io가 더 좋아야합니다. – Lalaland
똑바로 그리고 믿을만한 :) – Perception
Ahhh. 매개 변수를 입력하지 않아도 신뢰할 수 없습니다. 코드에서는보기가 쉽지만 큰 프로그램에서 seonds가 scanf()에서 긴 방법으로 정의 된 경우 버그 수정으로 int 유형에서 초 단위로 변경 될 수 있습니다. 그러나 위의 코드는 오류없이 컴파일됩니다. –
당신은 (여기 좋은 것 유한 상태 기계 디자인과 같은)에 필요한 구성 요소로 문자열을 구문 분석하는 자신의 문자열 파서를 쓸 수 중 하나, 또는 ...
이가 재하지 마십시오 바퀴를 발명하고 Boost Date & Time 라이브러리와 같은 것을 사용하십시오.
POSIX 호환 플랫폼에서 strptime()
기능을 사용하고 데이터를 struct tm
구조로 저장할 수 있습니다. struct tm
의 형식으로 된 후에는 struct tm
에 정의 된 시간 형식을 사용하여 다른 POSIX 함수를 활용할 수있는 몇 가지 추가적인 자유가 있습니다.
예를 들어, 문자열을 구문 분석하기 위해 다시 서버에서 전송되는 다음 할 수있는 : 당신은 C에서 stringstream
클래스를 사용할 수 있습니다
char* buffer = "2011-08-12,02:06:30";
struct tm time_format;
strptime(buffer, "%Y-%d-%m,%H:%M:%S", &time_format);
문자열을 날짜/시간 개체로 구문 분석하려는 것처럼 들립니다. –