No.17915![]() |
string型のポインタについて 投稿者---教えてください(2004/11/09 19:14:44) |
||
C++でCGIを作成しています。 string型の変数のポインタをcharポインタに渡したいのですが どうすれば良いのでしょうか? こんな感じで作っているのですが。 string aaa::bbb(string xxxx) { //上記、宣言も良くわかってません char *zzzz; // *zzzzに string xxxxのポインタを渡す方法がわかりません。 //xxxxの文字の半角→全角を行います。 return; } すいませんがよろしくお願いします。 |
No.17916![]() |
Re:string型のポインタについて 投稿者---nop(2004/11/09 19:26:06) |
||
>string型の変数のポインタをcharポインタに渡したいのですが >どうすれば良いのでしょうか? > // *zzzzに string xxxxのポインタを渡す方法がわかりません。 > //xxxxの文字の半角→全角を行います。 文字列の各文字を変換したいのであれば、 String で得られるポインタを使用せず、 char 配列に入れて変換した方がよいでしょう。 >//上記、宣言も良くわかってません よく解っていないのであれば、 その宣言を理解する方が先です。 CGI を作成したい様ですが、 まずは、基礎から勉強してはいかがでしょうか? # また、CGIであれば C/C++ より # Prel などの言語の方が向いているかと思います。 |
No.17918![]() |
Re:string型のポインタについて 投稿者---RAPT(2004/11/09 20:13:53) |
||
std::string::c_str() |
No.17924![]() |
Re:string型のポインタについて 投稿者---かずま(2004/11/09 23:28:33) |
||
> std::string::c_str() c_str は const char * を返すので、char * の変数には代入できません。 さて、ここで問題です。 string x = "abc"; char *z; について、 z = const_cast<char *>(x.c_str()); と z = &*x.begin(); とは同じと考えてよいのでしょうか? string は、basic_string<const char> ではなく、basic_string<char>だから、 c_str() が、const char * でなく、char * を返してもよいのでは? |
No.17925![]() |
Re:string型のポインタについて 投稿者---RAPT(2004/11/10 00:03:22) |
||
> std::string::c_str() c_str は const char * を返すので、char * の変数には代入できません。 無論、承知の上。その辺は質問者に調べてもらいたかったから敢えて省略してみた。 # 上で中身を配列に…とも指摘があったし。 さて、ここで問題です。 string x = "abc"; char *z; について、 z = const_cast<char *>(x.c_str()); と z = &*x.begin(); とは同じと考えてよいのでしょうか? string は、basic_string<const char> ではなく、basic_string<char>だから、 c_str() が、const char * でなく、char * を返してもよいのでは? # LPTSTR CString::GetBuffer(int nMinBufLength); や # LPTSTR CString::GetBufferSetLength(int nNewLength); # と同じ扱いですな(質意が)。(回答に非ず。感想) # すると、std::string::c_str() は、CString::operator LPCTSTR() # と意味的に同じですね。 |
No.17928![]() |
Re:string型のポインタについて 投稿者---επιστημη(2004/11/10 11:02:11) |
||
このくらいにしておきましょうや。 ここは 'C言語関係' らしいから。 |