Boost'un bir tutorial on how to load XML from a file vardır. Kodda oluşturduğum veya bir kullanıcıdan aldığım (örneğin cin
ile) bir dizeyle nasıl besleyebilirim?Boost.PropertyTree, bir dosya değil, bir dize ile nasıl beslenir?
14
A
cevap
10
Dizeyi istringstream
içine sarın. benim için çalışıyor
11
İşte kodlar ... istringstream
gereksiz kopyalarını tüm tampon kullanarak çünkü
// Create an empty property tree object
ptree xmlTree;
// Read the XML config string into the property tree. Catch any exception
try {
stringstream ss; ss << xmlConfigString;
read_xml(ss, xmlTree);
}
catch (xml_parser_error &e) {
LOGERROR ("Failed to read config xml " << e.what());
}
catch (...) {
LOGERROR ("Failed to read config xml with unknown error");
}
4
diğer cevaplar olmayan idealdir.
this question üzerinde bir cevap size kaldırılmış istrstream
kullanabilirsiniz, anlaşılacağı gibi, ama bu uyarılar üretir ve gelecekte kaldırılabilir olabileceğinden daha iyi bir çözüm boost::iostreams kullanmaktır: Bu gereksiz yere kopyalama kaçınır
boost::iostreams::stream<boost::iostreams::array_source> stream(moo.c_str(), moo.size());
boost::property_tree::read_json(stream, tree);
Aynı şekilde arabellek istrstream
(giriş arabelleğinizin büyük olması durumunda önemli bir sorun olabilir) ve kendi akış sınıfınızı yazmak zorunda kalmanızı sağlar.
İlgili konular
- 1. GNU Paraleline geniş bir komut dizisi nasıl beslenir?
- 2. Matplotlib svg dize olarak ve bir dosya değil
- 3. Etkinlik, özet akışlarıyla beslenir
- 4. Java'da bir dosya nasıl oluşturulur (klasör değil)?
- 5. NSOpenPanel bir dizin seçin (bir dosya değil)
- 6. Geri Dönük Dosya bir çalışma alanında değil çalışma alanında değil
- 7. JavaScriptStringEncoded ile kodlanmış bir dize nasıl çözülür?
- 8. NSCachesDirectory dosya sistemimde bir dizin değil
- 9. Logback: maksimum dosya boyutu ile bir dosya
- 10. IOS: bir diziden bir dosya txt bir dize geç
- 11. nasıl bir dize
- 12. Bir dosya sadece Blueimp dosya yükleme eklentisi ile nasıl yüklenir?
- 13. bitiştirmek dosya adları dize ile listelemek
- 14. açık dosya bir unicode dosya adıyla mı?
- 15. Bir metin dosyasındaki ilk satırı bir dize ile değiştirin
- 16. Angularjs Bağımsız değişken bir işlev değil dize var
- 17. Farklı dize ile bir eşleşme grubunu nasıl değiştirirsiniz?
- 18. LZO bir dosya akışı ile çalışmak nasıl?
- 19. Nasıl jax-rs ile bir dosya gönderirim?
- 20. Elisp ile boş bir dosya nasıl oluşturulur?
- 21. Ansible ile bir dosya chmod + x nasıl?
- 22. Ansible ile boş bir dosya nasıl oluşturulur?
- 23. Bir dize ile başka bir dizge nasıl değiştirilir
- 24. nasıl bir piton dize
- 25. Haskell: hlint nasıl söyleyeceğini değil: `Uyarı: dize
- 26. Sadece bir metin dosya adının bir parçasını nasıl okunur? Ve bir textBox içinde bir dize ile karşılaştırın?
- 27. Derlenmiş bir DLL'de kodlanmış bir dize nasıl düzenlenir?
- 28. MVC değil doğrulamak boş dize
- 29. Git ile, bir dosya yolu yerine `git log` ile bir dosya desenini nasıl ararsınız?
- 30. bu müthiş forumunda bir dize