我有一个external_jpeg_func()
函数,它接收一个char数组作为参数来处理jpeg数据。我无法修改这个函数。为了向其提供char数组,我会像下面这样操作:
//what the funcs take as inputs
std::string my_get_jpeg();
void external_jpeg_func(const char* buf, unsigned int size);
int main ()
{
std::string myString = my_get_jpeg();
external_jpeg_func(myString.data(), myString.length() );
}
我的问题是:使用字符串传输字符数组是否安全?JPEG(或任何二进制文件格式)是否有可能遇到像 '\0' 这样的字符并导致数据丢失?
string.length()
和strlen()
方法似乎会失败。有什么建议吗? - Morporkstrlen
不应被视为“常规方法”。这就是为什么有一个明确的长度非常重要的原因,因为strlen
只告诉你第一个空字符的位置。 - Steve Jessop