C言語関係掲示板

過去ログ

No.1328 string型の変数のポインタをcharポインタに渡したい

[戻る] [ホームページ]
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言語関係' らしいから。