C++ char [100] ="hello"不起作用

Kry*_*rix 0 c++

是否有更好,更短,更容易阅读的以下代码版本:

char ar[100];

int main() {
    //ar = "hello"; doesn't compile
    ar[0] = 'h';
    ar[1] = 'e';
    ar[2] = 'l';
    ar[3] = 'l';
    ar[4] = 'o';
    ar[5] = '\x00';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

注意:类型ar必须是char[100]."真正的"计划是:

#include <string>
#include <cstdarg>

#define TO_STRING_BUF_SIZE 100

char toStringBuf[TO_STRING_BUF_SIZE];

std::string toCptr_(const char * format, ...) {
  va_list argzeiger;
  va_start(argzeiger, format);
  int16_t ret = vsnprintf(toStringBuf, TO_STRING_BUF_SIZE, format, argzeiger);
  if(ret >= TO_STRING_BUF_SIZE - 1) {
    //toStringBuf = "buffer too small";
  } else if(ret < 0) {
    //toStringBuf = "encoding error";
  }
  va_end(argzeiger);
  std::string returning(toStringBuf);
  return returning;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*rtz 6

使用该strcpy函数复制C风格的字符串.

strcpy(ar, "hello");
Run Code Online (Sandbox Code Playgroud)