MS VC++ を見ると、シリアライズということばが頻繁に現れるのですが、シリアライズの思想が良くわかりません。

・シリアライズの目的は?
・シリアライズのメリットは?なぜMSはこういうものを用意したの?
・MSが考えた概念なのでしょうか?一般的な概念なのでしょうか?(GNU GCCなどでこういったものは用意されているのでしょうか?)

よくわかってないので変なことを聞いているかもしれませんが、よろしくお願いします。

A 回答 (5件)

シリアライズ(直列化)は一般的と言っていいでしょうね。


オブジェクトおよびその集合をシリアライズすることで、
通信線を介して送信/受信したり、ファイルに書き込み(保存)/読み込み(復元)したり。
    • good
    • 0
この回答へのお礼

なるほど。ありがとうございます。

もともと一般的概念としてあるけど、C++のライブラリとして用意してくれているのは Microsoft だけ、ということでしょうか?

お礼日時:2003/03/13 21:31

> 一番ありがたいのは、GNU の C++ で使えるクラスライブラリです。



何をしてくれるクラスライブラリですか?
    • good
    • 0
この回答へのお礼

自分自身よくわかっていないので、おっしゃっていることを勘違いして質問してしまっていたようです。すみません。
質問にさえなっていない状態のようなので、もう一度、本屋に行って自分で調べまくります。

お付き合いいただいてありがとうございました。

お礼日時:2003/03/14 11:27

> この情報の参照先を教えていただけないんでしょうか?



何の情報?
    • good
    • 0
この回答へのお礼

>シリアライズあるいはPersistency(永続性)をサポートする
>クラスライブラリはいくらでもあります。

の「クラスライブラリ」(MS VC++についている以外の)です。
一番ありがたいのは、GNU の C++ で使えるクラスライブラリです。

お礼日時:2003/03/14 10:58

> Persistency とは何でしょうか?言葉の響きはずいぶん違うのですが、シリアライズの一般化でしょうか?



Persistency(永続化)はオブジェクトの保存/復元メカニズムです。そのひとつがシリアライズ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
もしよかったら、

>シリアライズあるいはPersistency(永続性)をサポートする
>クラスライブラリはいくらでもあります。

この情報の参照先を教えていただけないんでしょうか?

お礼日時:2003/03/14 09:17

> もともと一般的概念としてあるけど、C++のライブラリ


>として用意してくれているのは Microsoft だけ、ということでしょうか?

Microsoft'だけ'とする根拠はなんですか?
シリアライズあるいはPersistency(永続性)をサポートするクラスライブラリはいくらでもあります。
    • good
    • 0
この回答へのお礼

> Microsoft'だけ'とする根拠はなんですか?

すみません。
わたしは、gnu の g++ と 昔の Borland のと最近の Visaul C++ しか使ったことがないのですが、目だったところでは MS のしか聞いたことがなかったので、以前は概念としてとしか存在しなかったものを MS が実装した、ということかなと思ったのです。

Persistency とは何でしょうか?言葉の響きはずいぶん違うのですが、シリアライズの一般化でしょうか?

お礼日時:2003/03/13 23:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語習得と学校とJava

C言語を習得したくスクールを探しているのですが、
どうも今ひとつピンとくる学校が見つかりません。
現在の知識はC言語の基礎が分かっている程度です。

目標として卒業時には、作品として製作会社に
恥ずかしくなく見せられる規模、クオリティのソフト、
ゲームの製作が出来る様になりたいです。

東京都内の学校でその要望に適うスクールはありませんでしょうか?
社会人なので夕方、土日授業のコースが希望です。
条件が会えば専門、大学でも何でも良いです。

コース内容もどんな物でもC言語が勉強出来れば
ソフト、ゲーム、組込みなど問いません。
あとは、その程度ならこれやっとけー的な教材、本なども。

もう一つ質問です。
javaを習得してからC言語を勉強しても、
スムースに理解、導入出来るものでしょうか?

ご教授頂お願いいたします!

よろしくお願いいたします。

Aベストアンサー

C言語の基礎がわかっていらっしゃるならあとはC++,JAVA等でオブジェクト指向プログラミングを体験できればそう難しくないと思います。この二つは似たようなもんです。 JAVAやC++からCをやると不便でしょうがない、、という感じになると思います。

組み込みは詳しくありませんが、プラグインやゲーム(DirectX)などは最初SDKや専用に書かれた著書をみて、サンプルコードを元に自分が思うようなものにしていく、、そういうものだと思います。 アルゴリズムの善し悪しがキーだと思います。

余談ですが、私がもしゲーム制作会社に就職したく、デモを作るとしたら、間違いなくゲームは作らず、開発向けのツールを持っていくと思います。それも小さいものをそれなりの量で。それを使った簡単なゲームくらいは持っていくと思いますが。 研究開発ではなく、日常業務なので、決められた時間内に効率よく仕事をこなせる方法を考えられる方が重要だと思いますので。

Qgccやg++がGNU製かどうかの確認法は?

初心者質問で失礼致します。

各UNIX上でgccやg++がGNU製のものかどうかは何処で確認できるのでしょうか?

% gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/specs
gcc version 2.95.3 20010315 (release)
% g++ -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/specs
gcc version 2.95.3 20010315 (release)

となりましたがGNU製なら"GNU"と表示されるのでしょうか?

Aベストアンサー

GNU製のソフトは、著作権を放棄しているわけではないので、

gcc,g++と言えばGNU製と考えていいと思います。
そうしたオリジナルのソースを利用したソフトについても、GNU使用許諾が適用されるので、そうした意味では"GNU製"と考えてイイかも。

元のgccを改変したプログラムの場合、
おそらく、-vなどのヴァージョン表示でその旨が記載されていると思います。

QC言語を独学で習得するには。

C言語を習得したいのですが、どんな本で習得するのがオススメですか?
あまり文字が多いとやる気がなくなってしまいますので図解と文がバランスのいいも。ソースの間違いがないもの。(以前使っていた本が間違いだらけでした)最もポピュラーな書き方をしているもの。(これも以前使ってた本は他とは違いクセがありました)を探しています。
文字を表示するのは出来ますが、ポインタ・文字列などはまだ理解が浅い感じです。

プログラミングなどを行う仕事に就きたいと思っていますのでC言語の本質を理解して応用のきいたプログラミングをしたいと思っています。
最終的にはC言語習得後にC++も学びたいと思っていますので、C++についてもオススメの本があったら教えてください。
特に、独学で完成度の高いソフトが作れるようになった方の意見をお願いします。

またタイトルとは別のことになってしまいますが、変数に日本語(漢字・ひらがな・カタカナ)を代入させるにはどうすればいいのでしょうか?

Aベストアンサー

独学で勉強して、C/C++の本質を理解して、完成度の高いソフトを作れる専門家になりたい、ということであれば、
> あまり文字が多いとやる気がなくなってしまいますので
というのは難しいかも…。

基本的に、天賦の才を除けば、
どれだけのよい本(に限らないですが)を読んで、
どれだけのよいコードを書いて、
どれだけのよい経験を積むか。
そしてそれをどれだけものにできるか、だと思いますから。

Cはいくつかあがっているので、
C++に入るころには、Cはマスターしているという前提で、現時点でのC++のお勧め本は以下。
・プログラミング言語C++(C++言語設計者自身の本)
・C++の設計と進化(これも。「本質の理解」には欠かせないと思う)
・ISO/IEC14882:2003 (言語仕様の規格書)
・EffectiveC++/MoreEffectiveC++/EffectiveSTL(俗にMayers本)
・その他、ピエゾン・エデュケーションの本は軒並み全部目くらいは通す
(できれば原書も)

Qシリアライズ関数でのReadStringは読み直しができない?

VC++6.0でMFCを使ってのCSVファイル入力を検討しています。
シリアライズ関数内でReadStringを使って1行づつ入力しているのですが、ファイル終端に達した後の処理として、もう一度ファイル先頭から読み直しをしたいのですが、うまくいきません。どうすれば、読み直しができるのでしょうか?
処理の流れは次のようにしました。
void CDispDoc::Serialize(CArchive& ar)
{
CStringline;
if (ar.IsStoring())
{
}
else
{
while(ar.ReadString (line)) {   何かの処理  }
//whileを出たところでファイル先頭からの読み直しをしたい

次の2点を試したのですが、うまくいきません。
(1)ファイルポインタを戻してから入力する。
CFile* fp = ar.GetFile ();
fp->SeekToBegin ();
ar.ReadString (line);//この方法ではFalseが戻る

(2)新たなArchiveオブジェクト作って使う。
CFiletheFile(ar.GetFile()->GetFilePath (), CFile::modeRead);
CArchive arc(&theFile, CArchive::load);
arc.ReadString (line);//この方法では共有違反と言われる

ReadStringでは読み直しができないのでしょうか?

VC++6.0でMFCを使ってのCSVファイル入力を検討しています。
シリアライズ関数内でReadStringを使って1行づつ入力しているのですが、ファイル終端に達した後の処理として、もう一度ファイル先頭から読み直しをしたいのですが、うまくいきません。どうすれば、読み直しができるのでしょうか?
処理の流れは次のようにしました。
void CDispDoc::Serialize(CArchive& ar)
{
CStringline;
if (ar.IsStoring())
{
}
else
{
while(ar.ReadString (line)) {   何かの処理  }
//while...続きを読む

Aベストアンサー

共有違反はCDocuemntクラスのOnOpenDocument関数で
CFile::shareDenyWriteで開いているためだと思われます

Serializeの引数 arかCFileオブジェクトを取得してこのファイルオブジェクトを操作してからCArchiveを再構築するといった手順でしょう

CFile* pFile = ar.GetFile();
pFile->SeekToBegin();
CArchive arc( pFile, CARchive::load );
arc.ReadString( line );
arc.Close();

といった具合です

QC言語習得

C言語を習得したいんですが、
おすすめの勉強法やサイト、本などが
あったら教えてください。
お願いします。

Aベストアンサー

例えば次等を参照下さい。
http://oshiete.goo.ne.jp/qa/7944147.html #4 他
http://okwave.jp/qa/q7970702.html

その他ではokwaveサイト内の過去の回答を例えば次のようにサーチしてみて下さい。
C 入門 OR 初歩 OR 初めての OR 猫 site:okwave.jp

QMS-VisualC++:コンパイル後実行をするとDOS窓が一瞬だけ現れて消えるのをずっと表示させたいのですが。

cout << t << endl;

return 0;

}

単に変数を画面に表示させるだけのプログラムなのですが、Build後、実行すると一瞬DOS窓が立ち上がり表示された後すぐ消えてしまいます。この表示したDOS窓を持続させたいときはどうすればいいのでしょうか。おそらくものすごく基本的なことなのでしょうが、Linux上でしかC++をしてないのでわかりません。

Aベストアンサー

!マークのボタンを押して実行したら、

Press Any Key

って出てきて止まりませんでしたっけ?

Q難しそうなC言語の習得方は?

初心者のものです。
基本情報技術者試験で難しそうなC言語を習得するための

おすすめの本、ホームページ、講座などがあったら教えていただきたいのですが宜しくお願いします。

ある学校のビデオ講座を聞きましたが、初回目から、あまりの難しさに、びっくりでした。

Aベストアンサー

 
> 基本情報技術者試験で難しそうなC言語を習得するためのおすすめの本、ホームページ、講座などがあったら教えていただきたい
 
> 基本情報技術者試験で難しそうなC言語を習得するためのおすすめの本、ホームページ、講座などがあったら教えていただきたい

私自身、C言語に明るくないので、他人様にアドバイスするのはおこがましいのですが、参考までに定評の高いサイトを提示します。
自分で情報を探すのも勉強のうちですので、後はご自分で検索してみてください。


[ 柴田望洋のホームページ ]
http://www.fit.ac.jp/~shibata/

[ WisdomSoft ~Developers Network~ ]
http://black.sakura.ne.jp/~third/index.html

[ C言語 FAQ 日本語訳 ]
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

[ C MAGAZINE - プログラミングに関するWebサイトリンク ]
http://www.cmagazine.jp/link/

[ Cプログラミング診断室 ] ※
http://www.pro.or.jp/~fuji/mybooks/cdiag/


※ つい最近、復刊されました。
 

参考URL:http://www.fit.ac.jp/~shibata/,http://black.sakura.ne.jp/~third/index.html

 
> 基本情報技術者試験で難しそうなC言語を習得するためのおすすめの本、ホームページ、講座などがあったら教えていただきたい
 
> 基本情報技術者試験で難しそうなC言語を習得するためのおすすめの本、ホームページ、講座などがあったら教えていただきたい

私自身、C言語に明るくないので、他人様にアドバイスするのはおこがましいのですが、参考までに定評の高いサイトを提示します。
自分で情報を探すのも勉強のうちですので、後はご自分で検索してみてください。


[ 柴田望洋のホームページ ]
...続きを読む

QCException についてVC6とVC2005とのコンパイルの違い

こんにちわ、お世話になります。

現在、Windows XPにて、VC++6.0からVC++2005へと
あるソフトの移植をしているのですが、
CException についてコンパイルエラーが出ています。
試しに、
--
CException* pException = new CException;
delete pException;
--
の様な文を書いて、VC++6.0とVC++2005とでコンパイルを
比較してみました。

すると思惑通り、VC++2005でだけ、以下の様なエラーが
出てしまいます。
--
error C2259: 'CException' : 抽象クラスをインスタンス化できません。
1> 次のメンバが原因です:
1> 'CException::~CException(void)' : は抽象型です
--

ヘルプを見てもエラーが出るのは納得なのですが、
それならなぜVC++6.0の時には出なかったのでしょうか?

以上、よろしくお願い致します。

こんにちわ、お世話になります。

現在、Windows XPにて、VC++6.0からVC++2005へと
あるソフトの移植をしているのですが、
CException についてコンパイルエラーが出ています。
試しに、
--
CException* pException = new CException;
delete pException;
--
の様な文を書いて、VC++6.0とVC++2005とでコンパイルを
比較してみました。

すると思惑通り、VC++2005でだけ、以下の様なエラーが
出てしまいます。
--
error C2259: 'CException' : 抽象クラスをインスタンス化できません。
1> ...続きを読む

Aベストアンサー

> そう思って afx.h を見てみたのですが、VC++6.0、VC++2005とも
> virtual となっていました。

VC++2005のほうは、デストラクタが純粋仮想関数になっていませんか?
(=0がついていませんでしたか?)

QC言語習得したいけど本が高い・・

こんにちは。
僕はオンラインRPGを作りたいのですが、
C言語をマスターしようと思うと、高いC言語の専門書籍を買うのに
お小遣いが足りません><
なんとか安くC言語をマスターできる方法ないでしょうか??
切実です・・

Aベストアンサー

C言語で通信系は不得意という意見が出てますが違います。ただ、面倒で複雑なだけです(^^ゞ

いきなりC言語マスターしようとすると、RPGまでたどり着くのに時間がかかりすぎて挫折する可能性がありますので、手軽にゲームを作りたいならHSPという選択肢もありますので、覚えておいてください。
http://www.onionsoft.net/hsp/

C言語の入門ページは大体紹介されてますので、私は違う方向から解説します。
まず、C言語+ライブラリで出来るだけ簡単にゲームを作るという手があります。
DXライブラリは、基本的に2Dのゲームのみですが開発は容易です。
http://homepage2.nifty.com/natupaji/DxLib/
http://l.huu.cc/g/

全部自分で制御したいや、3Dまで進みたい場合は、「0からのゲームプログラミング」などが参考になると思います。
http://www.plustarnet.com/aspil/Programming/

ゲームのアルゴリズム関係
1.ゲームプログラミングWiki
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?FrontPage
2.ゲームヘル2000のゲームヘルアーカイブの資料参考に。
http://www5.atwiki.jp/yaruhara/pages/1.html

とりあえず、難しいネット系は今回外してあります。ローカルで動くゲームが作れるようになってから挑戦してみたほうが良いと思います。特にRPGはサーバーが必要になる可能性があるのでC言語以外の勉強も多数必要です。

C言語で通信系は不得意という意見が出てますが違います。ただ、面倒で複雑なだけです(^^ゞ

いきなりC言語マスターしようとすると、RPGまでたどり着くのに時間がかかりすぎて挫折する可能性がありますので、手軽にゲームを作りたいならHSPという選択肢もありますので、覚えておいてください。
http://www.onionsoft.net/hsp/

C言語の入門ページは大体紹介されてますので、私は違う方向から解説します。
まず、C言語+ライブラリで出来るだけ簡単にゲームを作るという手があります。
DXライブ...続きを読む

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む


人気Q&Aランキング