如何避免提供长度和char*?

ste*_*lla 0 c++ char

有一个函数将数据发送到服务器:

int send(
  _In_  SOCKET s,
  _In_  const char *buf,
  _In_  int len,
  _In_  int flags
);
Run Code Online (Sandbox Code Playgroud)

提供长度在我看来有点奇怪.我需要编写一个函数,向服务器发送一行并包装这一行,这样我们就不必明确地提供长度.我是Java开发人员,在Java中我们只能调用String::length()方法,但现在我们不是Java.我怎么能这样做,除非提供长度作为模板参数?例如:

void sendLine(SOCKET s, const char *buf)
{
}
Run Code Online (Sandbox Code Playgroud)

是否可以实现这样的功能?

Mik*_*eMB 5

使用std字符串:

void sendLine(SOCKET s, const std::string& buf) {
    send (s, buf.c_str(), buf.size()+1, 0); //+1 will also transmit terminating \0.
 }
Run Code Online (Sandbox Code Playgroud)

旁注:您的包装函数忽略返回值,不带任何标志.