Comments (2)
Unfortunately, it does not work in that way.
You converted the data from toml::value
to foo::device
. This conversion inevitably copies the value because the converted types are not a reference nor pointer. You cannot modify the original through copied value because they are located in different regions of memory.
If you want to modify the value, you need to modify the original data. There are several ways to do that.
- you can modify the value directly.
int main()
{
auto file = toml::parse("cfg.toml");
file["device"]["heart"] = 1;
std::ofstream ofs("cfg1.toml");
ofs << file;
ofs.close();
return 0;
}
- you can take a non-const (mutable) reference to the data
int main()
{
auto file = toml::parse("cfg.toml");
auto& heart = toml::find(file, "device", "heart");
heart = 1;
std::ofstream ofs("cfg1.toml");
ofs << file;
ofs.close();
return 0;
}
- you can substitute modified
foo::device
to"device"
table.
int main()
{
auto file = toml::parse("cfg.toml");
auto f = toml::find<foo::device>(file, "device");
f.heart = 1;
file["device"] = f;
std::ofstream ofs("cfg1.toml");
ofs << file;
ofs.close();
return 0;
}
NOTE: The third example overwrites the whole device
table by foo::device
. Since foo::device
does not have port
member variable, file["device"] = f;
removes port
value in toml table.
from toml11.
thanks, it will be more convenient if i can do it in my way.
from toml11.
Related Issues (20)
- Cannot iterate over sub tables of an inline table HOT 2
- How can I check if an array has an homogeneous set of values? HOT 2
- Examples use C++ 17 syntax HOT 1
- Serialization issue with floating values and locale HOT 1
- I'd like to retrieve uint64_t that exceed the range of int64_t HOT 1
- New version? HOT 3
- Weird serialization issue with strings that are file paths HOT 1
- Building with C++20 and the following error is triggered HOT 1
- When trying to use your tests / examples, there are no `*.toml` files in the repo HOT 1
- force arrays to be inline
- Warning: Moving a temporary object prevents copy elison with g++ 13.2.1 HOT 1
- Different `strerror_r` function usage HOT 7
- strerror_r returns int in emscripten HOT 2
- toml::parse() sould be able to read everything that serializer outputs HOT 1
- User-defined error messages and generic hints HOT 1
- User-defined error messages conflict with built-in hints HOT 1
- `toml::format` returns the wrong floating value HOT 2
- Preserve hex number format HOT 1
- Requiring CMAKE_CXX_STANDARD is a bug, not a feature
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from toml11.