是否還有更好的,更短,更易於閱讀下面的代碼版本:C++的char [100] =「你好」不起作用
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;
}
注:類型的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;
}
那麼是什麼問題?虛擬代碼或您的實際代碼?如果實際的代碼有問題,它在哪裏? – NathanOliver
'ar =「hello」'是一個語法錯誤。嘗試使用'strcpy' –
「ar的類型必須是char [100]」只有當你的教授或TA這樣說時,否則沒有理由使用裸字符數組。 –