2
을 사용하여 .yaml
파일에 노드를 쓰거나 편집하는 함수를 작성하려고합니다. 내 코드가 로컬 복사본을 편집 할 때 일종의 일을하고있다. _baseNode
을 인쇄하면 노드의 값이 5.4 인 것으로 나타납니다. 그러나 함수를 종료하고 내 컴퓨터에서 내 .yaml
을 확인한 후에 값 5.4가 없습니다. 여기 C++ YAML : .yaml 파일의 노드를 편집/작성하는 방법
_baseNode
개인 내 클래스의 멤버) :
YAML::Node& baseNode = YAML::LoadFile(_parameterFileName);
하지만이 오류를 얻을 : 내 두 번째 시도를 들어
void ParametersServerPC::testFunc2() {
boost::filesystem::path path(boost::filesystem::initial_path()/_parameterFileName);
_baseNode = YAML::LoadFile(_parameterFileName);
_baseNode["chip"]["clock_rate"]["3"] = 5.4;
std::cout << _baseNode << std::endl;
}
, 나는 YAML::Node& baseNode
을 만들어 :
invalid initialization of non-const reference of type 'YAML::Node&' from an rvalue of type 'YAML::Node'
관심있는 사람들을 위해,294,파일은 다음과 같습니다 :
chip:
clock_rate:
0: 1.0
1: 1.0
2: 1.0
3: 3.0
4: 1.0
내가 5.4 3.0에서 3
에 의해 매핑 된 값을 변경하고 싶습니다.
? 데이터가 메모리에로드되고 파일 시스템에 마법 같은 인터페이스를 제공하지 않는다는 것은 꽤 분명합니다. 'Emitter' API를 사용하여 변경된 트리를 파일 시스템에 명시 적으로 써야합니다. http://stackoverflow.com/questions/3342355/save-a-yaml-emitter-content-to-a-file-with- yaml-cpp. – filmor
오, 그래. 나는 튜토리얼 (https://code.google.com/p/yaml-cpp/wiki/Tutorial#Building_Nodes)을 기반으로 파일에 노드를 만들 수 있다고 생각했다. 나는이'Emitter' API를 살펴볼 것입니다. –