複数の string 文字列を char *const につめかえたいのですがどうすればよいか教えてください。
string str1, str2, str3;
↓
char *const str[] = {str1, str2, str3};
って感じに詰め替えたいです。
よろしくお願いします。
stringとは STL の std::string でしょうか?
char *const str[] = {str1.c_str(), str2.c_str(), str3.c_str()};
でいけるかもしれません。
あ〜
> char *const
じゃん。やっぱだめすね。
const char* ならいけますけど。
stringとは STL の std::string です。
編集 削除char s[BUFSIZ];
strncpy(s, str.c_str(), BUFSIZ);
char *const str[] = {s};
(動作未確認)
なんてのは邪道かな?
下記のようなロジックでつめかえることができました。
PARTさんありがとうございました
string str1 = "a";
string str2 = "b";
string str3 = "c";
char buff1[BUFFSIZE];
char buff2[BUFFSIZE];
char buff3[BUFFSIZE];
strncpy(buff1, str1.c_str(), BUFFSIZE);
strncpy(buff2, str2.c_str(), BUFFSIZE);
strncpy(buff3, str3.c_str(), BUFFSIZE);
char *const str[] = {buff1, buff2, buff3};
解決後に書いて悪いのですが,
std::string::copyってのがありますが……。
書いてみました。
std::string str1 = "test1";
char s[BUFSIZ];
str1.copy(s, BUFSIZ);
char *const str[] = { s };
(動作未確認)
> str1.copy(s, BUFSIZ);
は終端文字入れないので
std::string::size_type i = str1.copy(s, BUFSIZ);
s[i] = '\0';
のような操作が必要かも。
なるほど。では、事前に初期化しておけば、それも、アリと考えていいのかな。
char s[BUFSIZ] = {0};
str1.copy(s, BUFSIZ - 1];
とか。(VC++6sp6で動作確認済)