查看完整版本 : c++ write vector with struct to a file

煙民母親生賤種 2017-11-11 04:45 AM

c++ write vector with struct to a file

搞左幾個鐘都唔得! 有無人做開, 教我點搞!! :fst_014::fst_014::fst_014:


[url=http://rextester.com/KYDL88564]http://rextester.com/KYDL88564[/url]
c++ 一般點存檔?

yaris.yrx 2017-11-11 06:10 AM

This topic is usually referring to so called serialization. Try searching with this keyword together with C++ should give u something useful.

Good luck.

Susan﹏汪汪 2017-11-11 08:41 AM

其實你應該買本入門書學C++先

ncream 2017-11-11 09:03 AM

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-11-11 04:45 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=470699811&ptid=27050718][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
搞左幾個鐘都唔得! 有無人做開, 教我點搞!! :fst_014::fst_014::fst_014:


[url=http://rextester.com/KYDL88564]http://rextester.com/KYDL88564[/url]
c++ 一般點存檔? [/quote]


睇呢到有講。

[url]https://stackoverflow.com/questions/14089266/how-to-correctly-write-vector-to-binary-file-in-c[/url]

jasonchan35 2017-11-12 06:48 AM

希望幫到你
[url]https://www.youtube.com/watch?v=8XNW0eHJXJM&list=PLeGk08zVu456ngANo7V1qrI8QKXu682uX&index=7[/url]

有諗辦法 2017-11-12 08:56 AM

你用C#寫個 DLL … 做

xianrenb 2017-11-12 09:22 AM

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-11-11 04:45 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=470699811&ptid=27050718][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
搞左幾個鐘都唔得! 有無人做開, 教我點搞!! :fst_014::fst_014::fst_014:


[url=http://rextester.com/KYDL88564]http://rextester.com/KYDL88564[/url]
c++ 一般點存檔? [/quote]

其實呢個年代,或許 binary mode file i/o 已經不是應該要用的方法。
細 size data 用 text mode 存取 JSON 或 CSV ,大 size data 用 database 又或者專用的 file format 或許更加好。
google 到個 C++ JSON project,可能合用:
[url=https://github.com/nlohmann/json]https://github.com/nlohmann/json[/url]

[[i] 本帖最後由 xianrenb 於 2017-11-12 09:25 AM 編輯 [/i]]

Susan﹏汪汪 2017-11-12 12:33 PM

[quote]原帖由 [i]xianrenb[/i] 於 2017-11-12 09:22 AM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=470747994&ptid=27050718][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


其實呢個年代,或許 binary mode file i/o 已經不是應該要用的方法。
細 size data 用 text mode 存取 JSON 或 CSV ,大 size data 用 database 又或者專用的 file format 或許更加好。
google 到個 C++ JSON  ... [/quote]
汪汪呢個用temp file當ram用
https://github.com/SusanDoggie/Doggie/blob/master/Sources/Doggie/Foundation/MappedBuffer.swift

唔係binary的話做唔到個速度

jasonchan35 2017-11-13 01:02 AM

如果想整 C++ serializer support 埋 vector 同其他 type 可以睇依個,
仲包埋 zigzag integer number encoding
Time: 47:30
[url]https://www.youtube.com/watch?v=Ptoxv6s3grU&list=PLeGk08zVu455jjJgP2iyaML4pP3nNGlNy&index=7[/url]

Susan﹏汪汪 2017-11-13 01:08 PM

[quote]原帖由 [i]jasonchan35[/i] 於 2017-11-13 01:02 AM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=470788790&ptid=27050718][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]
如果想整 C++ serializer support 埋 vector 同其他 type 可以睇依個,
仲包埋 zigzag integer number encoding
Time: 47:30
https://www.youtube.com/watch?v=Ptoxv6s3grU&list=PLeGk08zVu455jjJgP2iyaML4pP3nNG ... [/quote]
你D片好似間中有爆聲

煙民母親生賤種 2017-11-14 12:09 AM

[quote]原帖由 [i]jasonchan35[/i] 於 2017-11-13 01:02 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=470788790&ptid=27050718][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
如果想整 C++ serializer support 埋 vector 同其他 type 可以睇依個,
仲包埋 zigzag integer number encoding
Time: 47:30
[url=https://www.youtube.com/watch?v=Ptoxv6s3grU&list=PLeGk08zVu455jjJgP2iyaML4pP3nNG]https://www.youtube.com/watch?v=Ptoxv6s3grU&list=PLeGk08zVu455jjJgP2iyaML4pP3nNG[/url] ... [/quote]我淨係睇到段片係咁 LOOK 上 LOOK 落, 已經無咩心機睇, 加上 at a glance, 你個 serializer class 都幾複雜, 唔係幾岩我用 ... :smile_42:

jasonchan35 2017-11-14 05:24 AM

github 有 source code
[url=https://github.com/SimpleTalkCpp/SimpleTalkCpp_Tutorial/blob/master/Network/007%20Binary%20Protocol/MySerializer.h]MySerializer.h[/url]

複唔複雜就睇下點睇, 要 support 唔同 CPU byte order + zigzag encoding 都好難再短
如果你睇 Protobuf 個 lib 都唔細, 件事本身就係有咁多野要做

幫到你明白點做就好, 幫唔到我都無計

[[i] 本帖最後由 jasonchan35 於 2017-11-14 05:27 AM 編輯 [/i]]

煙民母親生賤種 2017-11-14 01:01 PM

[quote]原帖由 [i]jasonchan35[/i] 於 2017-11-14 05:24 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=470842120&ptid=27050718][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
github 有 source code
MySerializer.h

複唔複雜就睇下點睇, 要 support 唔同 CPU byte order + zigzag encoding 都好難再短
如果你睇 Protobuf 個 lib 都唔細, 件事本身就係有咁多野要做

幫到你明白點做就好 ... [/quote]唔同 cpu byte order 是指 intel vs amd?? 定其他? 而 zigzag 我 do a google, 似乎是做來作省位的。這兩者我都唔用的。:fst_013:

jasonchan35 2017-11-15 11:02 AM

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-11-14 01:01 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=470856654&ptid=27050718][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
唔同 cpu byte order 是指 intel vs amd?? 定其他? 而 zigzag 我 do a google, 似乎是做來作省位的。這兩者我都唔用的。:fst_013: [/quote]

正確黎講應該叫 Endianness
[url=https://en.wikipedia.org/wiki/Endianness]https://en.wikipedia.org/wiki/Endianness[/url]

Little-endian - Intel, AMD
Big-endian - SUN SPARC (依前銀行用多), PowerPC (舊時 Mac, XBox 360)
ARM, MIPS 就 support 兩用, 不過係 boot 機時要講用邊種, Android 用 Little-endian
Middle-endian - 真係好少見

寫得落 File or 出 network 都要留意下, 因為你唔知另一部電腦係唔係用一樣既 byte order, 假如你想行返同一段 C++ code

jasonchan35 2017-11-15 11:12 AM

要睇個 Serializer 原理就係複雜D, 不過如果只係用既話都只係兩句就攪掂

void test_serializer_vector() {
        std::vector<int> s = {1,2,3,4};
        std::vector<int> d;

        std::vector<char> buf;
        { // serialize vector to buffer
                MySerializer se(buf);
                se.io(s);
        }
        { // desialize vector from buffer
                MyDeserializer de(buf);
                de.io(d);
        }

        assert(s == d);
}

[url=https://github.com/SimpleTalkCpp/SimpleTalkCpp_Tutorial/blob/master/Network/007%20Binary%20Protocol/test_serializer.cpp]https://github.com/SimpleTalkCpp/SimpleTalkCpp_Tutorial/blob/master/Network/007%20Binary%20Protocol/test_serializer.cpp[/url]

Susan﹏汪汪 2017-11-15 01:11 PM

[code]#include <iostream>
#include <iterator>
#include <vector>
using namespace std;

int main() {
        // your code goes here

        vector<int> v;

        copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(v));

        copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));

        return 0;
}[/code]

Susan﹏汪汪 2017-11-15 01:13 PM

[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2017-11-15 01:11 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=470911112&ptid=27050718][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]
#include
#include
#include
using namespace std;

int main() {
        // your code goes here

        vector v;

        copy(istream_iterator(cin), istream_iterator(), back_inserter(v));

        copy(v.begin(), v.end(), ... [/quote]
https://ideone.com/4Ji8Ju
頁: [1]
查看完整版本: c++ write vector with struct to a file