は、次のコードのバージョン読みやすく、より短く、より良いあります動作しません:C++のchar [100] = "hello" を
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がそうしている場合にのみ、それ以外の場合はベア・キャラクタ配列を使用する理由はありません。 –