【发布时间】:2015-01-18 00:27:24
【问题描述】:
我用一个字符串(mystring)把文件的内容放在上面:
std::ofstream fs("C:\\example.mp4",std::ios::binary);
fs << mystring;
fs.close();
这适用于几个例子,我想知道为什么? (即使文件包含零,例如 png 文件),我的意思是二进制文件已正确保存在 HDD 上...
否则,我使用 size() 方法来确定字符串包含的数据的大小以便上传,...我知道在某些二进制文件中有零('\O'),我读到这个方法类似于 length() 所以如果它找到一个 '\0' 就会停止计数?但即使在那种情况下,我的应用程序也能正常工作,我的意思是,size() 给了我数据(二进制文件)的真实大小,对于这种情况,我想准确地说我使用了这种类型的构造:
//...
std::ifstream::pos_type fileSize = ifs.tellg();
std::vector<char> bytes(fileSize);
//...
myifstream.read(&bytes[0], fileSize);
file_content = std::string(&bytes[0], fileSize);
所以 size() 将返回 myifstream.tellg() 的值?直到找到 '\0' 才算数??
在另一种情况下,服务器向我发送数据 (char*),我使用 append(data,size) 将它们复制到字符串中......即使有零,它也总是有效......
我想确保使用字符串对象来操作文件内容是安全的。 (文件流和大小())
【问题讨论】:
-
您的意思可能是
fs >> mystring;?还是您将string转储到文件中?您的问题不清楚。 -
Diego 谢谢,@vsoftco 字符串已经包含我从 HTTP 服务器接收到的数据,我想把这些数据放在一个文件中,数据可以是任何东西,例如 PNG 文件肯定包含零,无论如何我的代码工作,我的问题的目的,我想知道事情是如何工作的,为什么 fs
标签: c++ string size filestream