-2
R=10;
LPCSTR cs;
string s;
stringstream ss;
ss<<R;
s = ss.str();
cout << cs <<endl;

本来あるべきように、コンソール出力 10 が表示されます。

今、私はこれを関数に入れたかった:

const char * doubleToLPSTR(double x){
string s;
stringstream ss;
ss << x;
s = ss.str();
return s.c_str();

}

しかし

R = 10;
LPCSTR cs;
string s;
cs = doubleToLPSTR(R);
cout << cs << endl;

返品は機能しません....なぜですか???

助けてくれてありがとう、このように?

const char * doubleToLPSTR(double x){

const int size = 20;
char *cs = new char[size];

string s;
stringstream ss;
ss << x;
s = ss.str();
const char * tempAr = s.c_str();


for (int i = 0; i < size; i++){

    cs[i] = tempAr[i];

}

return cs;
}
4

4 に答える 4

0

見たところ、戻り値は実際には char* である必要はありません。結局のところ、戻り値を出力しているだけです。つまり、文字列を使用できるということです。(つまり、もちろん、簡潔にするために省略した char* である必要がある理由がありますか?)

double を自分で文字列に変換するのではなく、double を含むすべての数値型を変換できる "std::to_string()" メソッドを持つ String クラスを使用できます。

詳細については、こちらを参照してください

しかし、あなたの場合の基本的な使い方は...

R = 10;
std::cout << std::to_string(R) <<std::endl;
于 2014-08-08T11:44:42.673 に答える