teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

4294閲覧

C++でdouble型をchar型に変換するにはどうすればよいでしょうか?

affiliatwebtips

総合スコア10

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/01/30 20:43

0

0

C++でdouble型をchar型に変換するにはどうすればよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ごめんわかんない。

double d = 2.78;
char c = 「dをどうにかしたもの」

さて、c にはナニが求まればいいですか?
'2' ですか? 0x02 ですか? 四捨五入して '3'ですか? 0x03ですか?

d = 27.8 だったら?

投稿2018/01/30 22:54

編集2018/01/30 23:58
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

affiliatwebtips

2018/01/31 04:50

この場合、cには"2.78"という文字列を入れたいです。 さらに"rectangle"という文字列と連結したいのですが。 最終的に"rectangle2.78"という文字列を作成したいです。
episteme

2018/01/31 04:54

"2.78"はcharではない。文字列:const char*なら double d = 2.78; std::string str = "rectangle" + std::to_string(d); const char* p = str.c_str(); これで満足か?
affiliatwebtips

2018/01/31 05:06

できました!解決です。 ありがとうございます。
episteme

2018/01/31 05:12

お役に立ててなにより。繰り返すが 文字列は char型 じゃないからね!
affiliatwebtips

2018/01/31 05:14

すみません。先ほどの件、以下のようなエラーが出てしまいました。 エラー 1 error C2440: '初期化中' : 'const char *' から 'char *' に変換できません。 const char *からchar *への変換はできないでしょうか?
episteme

2018/01/31 05:19

十分な領域を確保し、strcpy()なりstring::copyでコピーせよ。 std::string str = "rectangle" + std::to_string(d); char p[N]; // 十分な大きさを確保しておくべし p[str.copy(p,str.size())] = '\0'; // あるいはフツーに strcpy(p, str.c_str());
affiliatwebtips

2018/01/31 05:21

ありがとうございます。試してみます。
episteme

2018/01/31 05:23

出来上がった "rectange2.78" をナニに使うんだ? const char* とすべきとこを char* で扱ってないか? だとしたらエラいムダだぞ?
affiliatwebtips

2018/01/31 05:39

バッチリ出来ました!ありがとうございます。 助かりました。
affiliatwebtips

2018/01/31 05:43

出来合いの関数の引数がchar*型なんです。関数の方はいじれないので。
episteme

2018/01/31 05:49

出来合いの関数が"絶対に"その引数を書き換えることがないなら char* p = const_cast<char*>(("rectangle" + std::to_string(2.78)).c_str());
affiliatwebtips

2018/01/31 05:58

こうすると処理が早くなるのでしょうか?それとも安全になるということでしょうか?
episteme

2018/01/31 06:00

余計なメモリの確保が不要になる。速くも安全にもならない。
affiliatwebtips

2018/01/31 06:05

了解しました。ありがとうございます。
episteme

2018/01/31 06:11

あ...確保した領域への文字列のコピーが不要となるので"ごくわずか"速くなる。
affiliatwebtips

2018/01/31 06:16

そうなんですね。置き替えしてみます。 ありがとうございます。
episteme

2018/01/31 06:20

繰り返すけど「出来合いの関数が"絶対に"その引数を書き換えることがない」ならね。
affiliatwebtips

2018/01/31 06:27

分かりました。ありがとうございます。
guest

0

文字列と言うことなら
つstd::to_string()

投稿2018/01/30 21:23

hichon

総合スコア5739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

affiliatwebtips

2018/01/31 04:52

ありがとうございます。 しかし最終的にchar型の文字列と連結したいので、char型に変換したいです。
guest

0

単純に'sprintf'で可能と思いますが。
参考

参考を見てください。

投稿2018/01/30 21:22

MasahikoHirata

総合スコア3778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

affiliatwebtips

2018/01/31 05:06

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問