1

標準ライブラリは、次のようなコードでテンプレート型 (いいえ ?) で sizeof 演算子を呼び出すことができると思います:

#include <fstream>

int main()
{
    std::ofstream file("test.bin", std::ios::binary | std::ios::out);
    char buf = 42;

    file.write(&buf, sizeof(buf));
}

ostream::write() に書き込む要素のサイズをプログラマーに尋ねる理由はありますか?

PS : これは私の最初の質問であり、私は英語ではありません。

4

3 に答える 3

1

Achar *かもしれない

char const c = 'a';
char const * ptr = &c;        // char const *

あなたの例のように、文字列リテラルにすることもできます

std::string x("some string");
char const * ptr = x.c_str(); // also char const *!!

ポインターだけを使用できる場合、読み取るメモリアドレスまでをどのように決定しますか? 長さが必要です:

file.write(x.c_str(), x.length());
于 2013-08-14T17:06:28.680 に答える
0

ポインタからサイズを取得できません。ostream::書き込み

ostream& write (const char* s, streamsize n);

heresは location を指すだけです。sizeofon this を使用しても、書き込む必要があるバイト数はわかりません。代わりに、ポインターのサイズが表示されます。

于 2013-08-14T17:06:18.947 に答える