c++ - 如何避免与 char* 一起提供长度?

标签 c++ char

有一个function向服务器发送数据:

int send(
  _In_  SOCKET s,
  _In_  const char *buf,
  _In_  int len,
  _In_  int flags
);

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

void sendLine(SOCKET s, const char *buf)
{
}

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

最佳答案

使用标准字符串:

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

附带说明:您的包装函数忽略返回值并且不接受任何标志。

关于c++ - 如何避免与 char* 一起提供长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192844/

相关文章:

java - 如何遍历二维字符数组在java中搜索单词?

java 将整数字符串转换为可能的 ASCII 字符组合

c++ - 为从其模板成员函数调用中已知的类型创建新容器的类

c++ - 如何关闭由自定义 QItemDelegate::createEditor() 创建的编辑器

c# - 如何更改 Windows 程序中的主机文件?

c - 字符串如何隐式类型转换为字符?

有符号十进制数的 char* 到 2s 补码二进制表示的 char*?

c++ - OpenCV Matcher - std::bad_alloc 异常

C++: 跨线程异常处理问题与 boost::exception

c++ - 将 char 数组分配给文字字符串 - C++