나는 프로그램을 쓰고있어 파일에서 날짜를 읽을 필요가있다. 날짜는 년, 월, 일입니다. 어떻게 모든 날짜 정보를 읽어야합니까 ?? 몇 가지 예를 들려 주시겠습니까 ??C + +에서 날짜 문자열 [Anjuta IDE 사용]
답변
먼저 구조체에 값을 저장해야합니다. 표준 구조체 인 tm이 있지만이 멤버에는 멤버가 많으며 일부 멤버는 다른 멤버에 따라 다르며 yday가 wday 및 mday와 일치하지 않을 경우 혼란 스러울 수 있습니다.
struct Date {
int year;
int month;
int day;
};
그런 다음 구조에 데이터를 읽을 수있는 기능이 필요합니다. 먼저 파일을 열고 첫 번째 줄을 읽고 처리해야합니다. 이를 위해 파일을 읽는 C++의 표준 클래스 인 ifstream을 사용할 수 있습니다.
std::ifstream f(fileName.c_str());
그런 다음 날짜가 저장된 행을 읽어야합니다. 그것이 exercie이기 때문에, 나는 그것이 처음이었다고 생각했다. getline()
은 입력에서 전체 행을 읽고 이전에 작성한 문자열에 저장합니다.
std::string line;
std::getline(f, line);
마지막으로 해당 라인을 처리해야합니다. 이 작업을 수행하는 방법은 다양하지만 C++에서 가장 편안한 방법은 문자열과 관련된 스트림을 사용하고 유형별로 각 필드를 읽는 것입니다.
std::istringstream str(line);
str >> date.year
>> firstDot
>> date.month
>> lastDot
>> date.day
;
오류 검사에 대해 수행 할 수있는 다양한 인증 방법이 있습니다 (귀하에게 맡기 겠습니다). 적어도 우리는 우리가해야 할 곳에 구분 기호로 읽는 점이 있는지 확인해야합니다. 여기
if (firstDot != '.'
|| lastDot != '.')
{
date.year = date.month = date.day = -1;
}
는 전체 기능입니다 : 당신이 볼 수 있듯이
bool readDate(const std::string &fileName, Date &date)
{
char firstDot;
char lastDot;
std::ifstream f(fileName.c_str());
bool toret = false;
date .year = date.month = date.day = -1;
if (f.is_open()) {
std::string line;
// Read line containing the date
std::getline(f, line);
// Chk string
std::istringstream str(line);
str >> date.year
>> firstDot
>> date.month
>> lastDot
>> date.day
;
if (firstDot != '.'
|| lastDot != '.')
{
date.year = date.month = date.day = -1;
}
else toret = true;
}
return toret;
}
, 오류 조건이 함수의 반환 값에 의해 신호된다뿐만 아니라 구조체날짜의 내용.
희망이 도움이됩니다.
시간 내 주셔서 감사 드리며 모든 세부 사항을 설명합니다. 시도해 보겠습니다. – gedO
strptime을 사용하는 것이 좋습니다. 나는 당신이 날짜를 가지고 찾고있는 내부 형식을 모르지만 이것은 당신을 위해 작동해야합니다. 오류 검사는 수행하지 않습니다.
struct tm tm;
time_t t;
strptime("%Y:%m:%d", &tm);
printf("year: %d; month: %d; day: %d;\n",
tm.tm_year, tm.tm_mon, tm.tm_mday);
t = mktime(&tm);
"." 데이터를 변수에 넣습니다 (예 : 배열 일 수 있음).
그런 다음이를 결합하여 고유 한 형식과 문자열을 만들 수 있습니다.
당신은 C가있는 경우 + +0 표준 : LIB (너무 최근의 일 필요는 없다), 여기 (1 원, 1 헤더), 무료 쉽고 작고 라이브러리 솔루션입니다 :
http://howardhinnant.github.io/date.html
#include "date.h"
#include <iostream>
#include <sstream>
int main()
{
using namespace gregorian;
date d;
std::istringstream in("2011.02.07");
in >> date_fmt("%Y.%m.%d") >> d;
if (in.fail())
std::cout << "failed\n";
else
std::cout << date_fmt("%A %B %e, %Y") << d << '\n';
}
출력 :
Monday February 7, 2011
구문 여기
는 사용 예이다 C의 strftime 함수에서 따릅니다.그리고 날짜 라이브러리에는 C++ 0x 헤더가 필요합니다.<cstdint>
과 일부는 2006 년에 만들어진 입니다.
이 라이브러리는 현재 사용되지 않습니다.
부스트 사용은 답변입니다.
This question은 비슷하지만 정확한 답변은 아닙니다. 문제는 아닙니다.
#include <fstream>
#include <iostream>
#include <string>
#include <boost/date_time.hpp>
using std::cout;
using std::cin;
using std::endl;
using std::string;
namespace bt = boost::posix_time;
int main()
{
string dd=" 12 December 2011 15:00:42";
//string dd="December 2011 15:00:42";
cout<<dd<<endl;
std::stringstream time1is(dd);
std::locale dForm = std::locale(std::locale::classic(),new bt::time_input_facet("%d %B %Y %H:%M:%S"));//12 December 2011 15:00:42
time1is.imbue(dForm);
bt::ptime t1;
if ((time1is>>t1).fail()) {
std::cerr<<"error while parsing "<<dd<<std::endl;
}else{
std::cerr<<"success!! "<<dd<<std::endl;
}
cout<<t1<<endl;
}
//char c; cin >> c;
return 0;
}
- 1. Anjuta IDE - 간단한 Python 질문
- 2. C# 날짜 문자열 (날짜)
- 3. 날짜 (문자열)의 OLE 날짜 (문자열)
- 4. C++에서 문자열 비교
- 5. C++에서 문자열 반환
- 6. C++에서 문자열 연결하기
- 7. C#에서 문자열 자르기
- 8. 날짜/시간 C++에서 파싱
- 9. 이멕스를 C 프로그래밍 IDE 구성으로 사용 하시겠습니까?
- 10. C#에서 C++ dll 사용
- 11. C#에서 C++ API 사용
- 12. C/C++에서 UIKit 사용
- 13. C#에서 RSA 사용
- 14. C#에서 함수 사용
- 15. C#에서 WM_Close 사용
- 16. C#에서 "클래스"사용
- 17. C++에서 pthread 사용
- 18. C#에서 Hbase 사용
- 19. C#에서 코드 사용 #
- 20. C++에서 tellp 사용
- 21. C++에서 wininet 사용
- 22. C#에서 DrawThemeTextEx 사용?
- 23. C#에서 in_addr 사용
- 24. C++에서 생성자 사용
- 25. C++에서 반복자 사용
- 26. C++에서 D3DImage 사용.
- 27. C++에서 wmemset 사용
- 28. C++ 개발자 용 IDE
- 29. 문자열 날짜를 C#에서 시스템 datetime으로 변환합니다.
- 30. C#에서 두 문자열 비교 #
날짜는 어떤 형식입니까? – robert
날짜 형식 : "YYYY.mm.dd" – gedO