シリアルデータを取り込んでファイルに保存するプログラムを作成しています。データの各行にはタイムスタンプが付けられます。このコードでは、タイムスタンプ付きのデータ行は s です。
string s = get_timestamp();
cout << "input string named s is: " << s << "\n";
numChars = sizeof(s);
cout << "size is: " << numChars << "\n";
fwrite( &s, sizeof(char) , numChars , DATA_LOG);
print ステートメントの出力
00000.27m,379named s is: 20130822.1141,00000.26m,379
size is: 28
何らかの理由で「s という名前の入力文字列」が上書きされているように見えることがわかります。ただし、これは私の主な関心事ではありません (理由はわかりませんが)。
私の主な問題は、私の fwrite がガベージをファイルに保存することです。numChars と string が正しいことがわかります。「&s」の代わりに「static_cast(&s)」を試してみましたが、結果は同じでした。何か案は?