std :: string을 포함한 모든 STL 클래스를 직렬화 할 수 있습니까? 나는 std :: strings 집합을 가지고 있으며 파일에 쓰고 std :: set에 다시로드하려고합니다.STL 클래스의 직렬화
답변
예, 가능합니다. 예를 들어, boost.serialization. STL에 대한
는
그냥, 파일에 대한 std::set<std::string>
를 작성하고 다시 그것을 밖으로 읽으려면 corresponding tutorial section를 읽고 프로젝트는 이미 부스트를 사용하지 않습니다, 당신은 간단한 것을 시도 할 수 있습니다 :
ofstream file("file.txt");
copy(theSet.begin, theSet.end(), ostream_iterator<string>(file, "\n"));
을
이렇게하면 한 줄에 하나씩 문자열을 텍스트 파일에 씁니다. 다음을 읽어 :
ifstream file("file.txt");
string line;
while(getline(file, line))
theSet.insert(line);
문자열에 새 행이 있으면 어떻게됩니까? 그것은 아주 나쁜 생각입니다 ... –
물론 문자열에 개행 문자가 들어 있으면이 코드는 작동하지 않습니다. 나는 OP의 내기를 기꺼이 하겠지만. –
왜 대신 null 문자로 구분하지 않습니까? C 문자열에는 일반적으로 포함되지 않습니다. –
직렬화 :: 부스트를 사용하는 예를 가진 STL 유형을
#include <map>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/map.hpp>
int main(int argc,char** argv) {
std::ofstream s("tmp.oarchive");
boost::archive::text_oarchive oa(s);
std::map<int,int> m;
m[1] = 100;
m[2] = 200;
oa << m;
}
컴파일을 직렬화
g++ -lboost_serialization myfile.cc
참고
#include <boost/archive/text_iarchive.hpp>
은 다른보다 앞에 나와야합니다.직렬화에 포함됩니다.- 보관할 STL 유형의 머리글을 포함해야합니다.
이 내용을 확인하십시오. 라이트 충분히
ONLY ONE CPP 파일 NEEDED
가 존재 지원 직렬화을에서는 lib 몇 가지 프로토 버퍼처럼, 부스트가
라이트 직렬화 솔루션 : 직렬화, 나를 위해 너무 무거운. 그래서 나는이 라이트 버전을 썼다.
지원
- 벡터
- 지도
- 는
- 문자열
- 프리미티브 (INT, 더블, 긴, ...)
- 엔디안 지원
- 중첩 컨테이너 세트 지원
사용 문자 대신 당신이 CMake하여이 프로젝트를 빌드 할 수 있습니다 STL why
빌드
에 bool에. 또는 serialization.h을 프로젝트로 가져 오면됩니다.
는 CHECK_ENDIAN = 1 만약 당신이 싶어 체크 엔디안데모
체크 testSerialization.cpp
오고의 숨에
엔디안 변환을 정의합니다.
- 1. C# 클래스의 직렬화 중지
- 2. STL 알고리즘 및 const_iterators
- 3. STL 벡터와 함께 STL 할당 자 사용
- 4. STL list_iterator code question (STL 4.0.0)
- 5. .stl 파일에서 STL (stereolithography) 개체의 치수 계산
- 6. STL 컨테이너의 요소에 반복자 반환
- 7. 주문 STL
- 8. 지도 STL
- 9. STL 반복자는
- 10. STL 벡터 성능
- 11. TCMalloc Allocator for STL
- 12. 직렬화 직렬화 (인위적인) 클래스의 다음과 같은 조립을 감안할 때에 /에서 XLSX
- 13. C# 부분 클래스의 XML 직렬화 순서를 제어하는 것은 무엇입니까?
- 14. Json.NET -이 클래스의 직렬화 할 사용자 지정 해결
- 15. 클래스의 직렬화 결과가 다른 컴퓨터에서 다른 이유는 무엇입니까?
- 16. 클래스의 이름을 바꾸면 직렬화 오류가 발생합니다. 그것을 고치는 방법?
- 17. GUI 클래스의 객체를 Java로 파일에 저장 (직렬화)하려면 어떻게해야합니까?
- 18. Android HashMap 직렬화/직렬화
- 19. 직렬화/직렬화 해제 가능
- 20. 직렬화 할 수없는 부분이있는 PHP 직렬화
- 21. 메모리 누수 - STL 세트
- 22. 이벤트 직렬화
- 23. DataContract 직렬화 -
- 24. 데이터 저장을위한 안드로이드 직렬화 ...
- 25. XML 직렬화 및 비누 직렬화
- 26. JSON의 비 직렬화 및 직렬화,
- 27. 이중 직렬화/역 직렬화 피하기
- 28. DateTime XML 직렬화 역 직렬화
- 29. .NET의 직렬화 - Android의 직렬화 해제
- 30. Xml 직렬화/직렬화 해제 문제
문자열로 할 수 있었는지, 예를 들어 세트로 직접 할 수 있습니까? – user963241
@cpx :'#include ' –
Abyx
그는 STL 컨테이너를 가진 클래스를 만드는 예제를 원하지 않는다. 그는 STL 컨테이너를 가져 와서 그것을 집어 넣는 함수의 예제를 원한다. 파일. –