C++相談室 part11
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
NGNGあなたにぴったりの言語、C++。
(´∀`).。o(関連URLは>>2-5の辺り)
0232デフォルトの名無しさん
NGNGBYTEならいいですか?typedefで見せ掛けだけですが・・・
ofstreamでバイナリで開いてもバイナリで書き込んでくれませんが
こんなにファイルサイズが勿体無い仕様にしたのは何故でしょう?
0233デフォルトの名無しさん
NGNG?
0234デフォルトの名無しさん
NGNGofstream fout("aaa.a",ios::out|ios::trunc|ios::binary);
fout<<0x12345678<<'\n';
fout.close();
とやってもファイルには
305419896
と書かれるのですが・・・
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGどういう結果を期待してたの?
0239234
NGNG0241234
NGNGfin>>iで
iのサイズとれば値を取得できるような・・・
0242234
NGNGテンプレート関数内でTのサイズ計れなかったですか?
計れるのならばバイナリで直接数値をぶち込んでも問題はないかと
時間なのでもうすぐ帰ります
0243デフォルトの名無しさん
NGNG> typedefで見せ掛けだけですが・・・
身分詐証、それがイカンのよ。
0244デフォルトの名無しさん
NGNG>いやバイナリで開いてるんだから数値を直接入れてくれてもいいのかなと
ネタとしか思えん…
0245デフォルトの名無しさん
NGNGそう純粋に信じていた無垢な時代が、漏れたちにだって……なかったなあ
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGってそろそろ来るんだろうな・・・。
0248デフォルトの名無しさん
NGNGどうしたらいいでしょうか?
0249デフォルトの名無しさん
NGNGcppファイル1つにhファイルが2000、とかの状況に萌えろ。
0250デフォルトの名無しさん
NGNGC++ 廃業する。
0251デフォルトの名無しさん
NGNGpimpl をただの構造体として使っているとか?
メンバ関数も持たせて、処理を移譲するようにしてやると少しは
オブジェクト指向らしくなると思う。
オレは昔は純粋仮想関数からなるインタフェースクラスを継承することに
美を感じていたが、最近では多態が不要なところでそれをやるのは
ダサいと思うようになってきた。そういうところは、pimpl を使って
処理を移譲するほうが美しい。
0252デフォルトの名無しさん
NGNGただの構造体隠蔽として使う方がまだ美しいと感じる。
ガワと中身という違う物を実装しているとはいえ、
見てくれ(インターフェイス)が同一な物を2度作らなきゃならんのがダサいと思う。
>最近では多態が不要なところでそれをやるのは
同一の理由により、インターフェイス継承もやりたくない。
0253デフォルトの名無しさん
NGNG男は黙ってコンパイルせい!!
Pentium 166MHzで!!!
0254デフォルトの名無しさん
NGNG・・・・あ、structureのことか。
日本語キモくって最近使って無かった(w
0255デフォルトの名無しさん
NGNG大和言葉を使いなさい
0256デフォルトの名無しさん
NGNG国賊め!!!
北朝鮮に拉致されてしまえ!!!
0257デフォルトの名無しさん
NGNGデータ構造だのprivate関数だのを外に晒す必要も無くなるだろうに。
あとメンバtypedefやメンバconstの類も。
operator newがあれば前方宣言だけでインスタンスまで作れる。
0258デフォルトの名無しさん
NGNGそのかわり間接参照が一回増えるのが嫌…っつー時代に設計された言語だ。
そこを責めてくれるな。
0259デフォルトの名無しさん
NGNGVisual C++の場合
cl /GX /P smp1.cpp -/Pスイッチで前処理だけしてsmp1.iファイルを作る
というふうに本に書いてあったのですが,意味がわからないのですが・・・
あと,cstdioとかは,ネームスペース名は,std;ではなくてどういうのになるんでしょうか?
0260デフォルトの名無しさん
NGNG考えた方法は
1.バッファを確保し strncpy 後に NULL を追加して <<(ostream&, char*)
うまくいくだろうけどバッファの動的確保のコストが気になる。
2.ループで指定文字数まで <<(ostream&, char)
うまくいくだろうけど効率悪すぎ
3.std::setw
指定文字数より長い場合には何もしてくれない
4.同期化された静的バッファにコピー後に <<(ostream&, char*)
バッファ長より長い文字列の場合に結局ループしながら書き出さなければならない & 同期化のコストもちょっと気になる。
何か良い方法はないでしょうか?
0261デフォルトの名無しさん
NGNGない
0262デフォルトの名無しさん
NGNGそんな冷たい事言わずに…
「ない」って言い切るくらい凄腕な方なら、私が考えた例よりも
効率の良い方法とかもいくつか思い浮かんだりするでしょう?
トレードオフの問題も絡めて、私の愚考よりも少しでもいい方法とかあったら
教えてください、よろしくお願いします。
0263260
NGNG0264デフォルトの名無しさん
NGNGスタック上にインスタンス作ったり、operator newが無かったりする時は、
クラスの定義が必要、となっていれば、別にオーバーヘッドは無いだろ。
0265デフォルトの名無しさん
NGNG単純に
basic_ostream::write( const char_type *, streamsize )
でダメなのか?
0266デフォルトの名無しさん
NGNGcout << (cin >> n) << endl;
なんか変な数値が出るんだけども,cin関数の戻り値が表示されてるってこと?
0267デフォルトの名無しさん
NGNG効率の良い方法を求めてるわけ?
答えは簡単。
ostreamを捨ててどっかからファイルクラスを拾ってくる。
これ、最強。
0268デフォルトの名無しさん
NGNGMSDNより
cin
extern istream cin;
このオブジェクトは、標準入力からバイト ストリームを抽出します。オブジェクトが生成されると、cintie() を呼び出し、&cout を返します。
0269デフォルトの名無しさん
NGNG{
};
struct B
{
friend void func(A& a)
{
}
};
struct C
{
friend void func(A& a)
{
}
};
void test()
{
A a;
func(a);
}
これってエラーにならんのね(VC)
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGstruct B と C のどっちのfuncを呼んだのだろう?と思って
舌のようなコードにしたら、Bが呼ばれてた。
struct B
{
friend void func(A& a)
{
printf("struct B\n");
}
};
struct C
{
friend void func(A& a)
{
printf("struct C\n");
}
};
…Cのほうは?
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGデフォルトのメンバがprivateかpublicか。
0274デフォルトの名無しさん
NGNG+キーワードの違い
0275デフォルトの名無しさん
NGNGstructはprivateなメンバがないクラスを記述するのに使うとよい。
0276デフォルトの名無しさん
NGNGoperataor new というか、ファクトリを前クラスに定義しろって話か?
できそうな気はするが、多重定義や名前空間に絡んで、予期せぬ名前解決された
ときにリンクするまで(あるいは実行時エラーが出るまで)トラブルが判明しないとい
う嫌なバグを作り込みそうな気がする。
0277デフォルトの名無しさん
NGNGVCがヴァカなだけでは?
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGfuncがすでに定義されてると。
iostreamはストリームの状態を表す為にoperator void*()とoperator!()をオーバーロードしてるんだよ。
std::cout << (cin >> n) << std::endl;
この場合、istream::operator>>(istream&, T)は第一引数を参照で返すから、
(cin >> n)はcinそのものを返す、と。
で、そのあとcinを出力する為にistream::operator void*()を呼び出す為、
一見不可解な値が表示されるというわけ。
0281デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGあきらめろ、おまえには無理だ。
0285デフォルトの名無しさん
NGNG最初は誰でもわからない、特にC++はCとは違って体系的な学習が
不可欠だ。
取り敢えず入門書1冊読破せよ。
0286デフォルトの名無しさん
NGNGはるひこさんのビギナー編ファイル入出力意外全部読みました
C++やると,C言語に戻りたくないですね
0287デフォルトの名無しさん
NGNG読むだけではなく、手間を厭わず打ち込んで試してみた?
そういう一見無駄な努力が、実はとても役に立つのだ。
0288デフォルトの名無しさん
NGNGすごくうちまくったよ
とはいわないけど,50回くらいは,
cout << "a=" << a << '\n';
進化
cout << "a=" << a << endl;
とか打ちましたよ
まーもっと打てよぼけとか言われそうですけど
C++覚えると,就職有利になりますかね?
c/c++募集ってとこにいきたいんですけど,C言語だけしか覚えていないんですよね
0289デフォルトの名無しさん
NGNG晴彦はどうかと思うが…。
まあ次は何かアプリ作ってみなさいってこった
0290デフォルトの名無しさん
NGNGあとは using namespace std; を外して、std::を識別子の前に付ける
ようにすればよい。
就職は、ほとんど会社に入ってから覚えさせられる事が多いので、
まずは自分でバグ取りできるだけの力をつけるようにする。そうすれ
ば進歩が速い。
0291デフォルトの名無しさん
NGNGクラス内でusing namespace std;とかする分には
問題ないんじゃ?
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGかといってC++の#includeはいやだ・・・う〜〜む・・・
0294デフォルトの名無しさん
NGNG> C++覚えると,就職有利になりますかね?
C++ 使う職場なら、もちろん有利になる。
0295デフォルトの名無しさん
NGNGstd::ios::noreplace
がないんだけど。
他に変わる物もみたらないのですが、どうすればよいのでしょうか?
0296デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/vccore/_core_differences_in_iostream_implementation.htm
古いiostreamを使うのが一番手っ取り早いかと。
0297デフォルトの名無しさん
NGNGヘッダなんて無駄なだけだろ
0298295
NGNGありがとうございます。
古いバージョン使うのあまり気が進まないです。(将来使えなくなりそうなので)
先にファイルOPENして確認するとかしかないか...。
0299デフォルトの名無しさん
NGNG分けないとネストが深くなりすぎてみにくくなる。
まぁ、オレもC/C++の#includeはちょっと好きじゃないけど。
C++なんてnamespaceがあるんだからヘッダのネストとかで悩ませられるのはどうかと思う。
0300デフォルトの名無しさん
NGNGそもそも2度同じこと(プロトタイプ宣言とか)を書かないといけないのがスマートじゃない…。Cは仕方無いとして、
C++はなんでヘッダがあるんだろう…?
0301デフォルトの名無しさん
NGNGテンプレートライブラリのため
0302デフォルトの名無しさん
NGNGただC++によってそのコードは今生かされているだけなのです。
0304デフォルトの名無しさん
NGNGなら、ヘッダに全部書けよ。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デバックの名無しさん
NGNG0308デフォルトの名無しさん
NGNGランダムマスターでも使え。
http://www2.toshiba.co.jp/efort/market/rmaster/index_j.htm
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%E4%B9%B1%E6%95%B0%E7%99%BA%E7%94%9F%E6%B3%95
0311デバックの名無しさん
NGNGC++でやりたいんです。
0312デフォルトの名無しさん
NGNGhttp://www.emit.jp/mt/mt.html
0313デフォルトの名無しさん
NGNGhttp://www.boost.org/libs/random/index.html
0314デフォルトの名無しさん
NGNGある意味、保証されているが、そういう認識の仕方は少し問題だと思う。
0315デフォルトの名無しさん
NGNGどういう事ですか?
Cで比較演算の真偽値が0/非0と言うのは理解してますが、
C++だと0/1が保証されているという記事を読んだので、どうなのだろうと。
0316デフォルトの名無しさん
NGNG厳密にはC++で比較演算の結果はbool型のtrue/falseを返す。
これを整数に変換すると1/0になるという認識が正しい。
0317デフォルトの名無しさん
NGNGされてる場合もあるからなあ。。
0318デフォルトの名無しさん
NGNGなるほど。
サンクスコです
0319デフォルトの名無しさん
NGNGstd::ofstream TestFile("./test.txt");
として
TestFile << "test message...";
とやった場合、メッセージの部分は
fstreamの内部にあるバッファへ溜め込まれているだけ
という認識でいいんでしょうか?
TestFile.flush()するまでファイルアクセスは無いですよね?
fstreamのソースみてもわけわからないです・・・
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGそんなもん実装依存だよ
flushすれば確実に吐き出されることが保証されているだけ
0322デフォルトの名無しさん
NGNGバッファが一杯になると自動的にフラッシュされる。
0323デフォルトの名無しさん
NGNG参照できるような関数ってあるんでしょうか?
例えばTestFile.c_str()みたいな・・・
0324デフォルトの名無しさん
NGNGrdbuf()
0325デフォルトの名無しさん
NGNG検索したらゾロゾロ出てきました
ありがとう
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNG全表示する。
#include <iostream>
#include <fstream>
int main()
{
std::fstream ifs("rdbuf.cpp");
std::cout << ifs.rdbuf();
}
0328デフォルトの名無しさん
NGNGそれも実装依存。
0329デフォルトの名無しさん
NGNG327です。
ソースきぼん。
俺のソースはC++標準ライブラリ、P603、§13.9。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGstd::endl std::ends std::flush の実体ってどこで宣言(定義)されてるんでしょうか?
ヘッダファイル群にGREPしたところ、ヤツらの型が
basic_ostream& (*pf)(basic_ostream&)で受け取れるとこまではわかったんですけど
受け取ってからどうやって振り分けたものか悩んでおります
ストリームのラッパークラスなんて初心者が手を出すような領域じゃ無いのかな・・・
■ このスレッドは過去ログ倉庫に格納されています