c++でint型の数値をchar型にキャストするにはどうすればいいでしょうか?
phpとかだとこんな感じだと思うのですが。
$suuti=(int)3.4990000; echo $suuti;
`
c++での書き方がわかりません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
「C」ではベストアンサーの通りです。
「C++」では以下のようにします。(質問のPHPのサンプルから char ではなく文字列型 std::string ないし文字配列 char* にしたいものと推量)
`
#include <string>
#include <iostream>
#include <sstream>
auto main()
-> int
{
int a = 123;
// 1. 単に標準出力したいだけならこれで可
std::cout << "1: " << a << std::endl;
// 2. 文字列型( std::string )として得たいのなら
std::string s = std::to_string( a );
std::cout << "2: " << s << std::endl;
// 3. 文字型の配列( char* )として得たいのなら
const char* cs = s.data();
std::cout << "3: " << cs << std::endl;
// 4. もしも C++11 より前の C++03 レベルの旧い規格でコンパイルする必要があるのなら
std::stringstream ss;
ss << a;
std::string s_legacy_method = ss.str();
std::cout << "4-1: " << s_legacy_method << std::endl;
const char* cs_legacy_method = s_legacy_method.c_str();
std::cout << "4-2: " << cs_legacy_method << std::endl;
}
`
投稿2014/07/17 10:31
編集2015/06/05 01:06総合スコア183
0
質問の意図がキャストではなく、数値から文字列への変換のようですので、 すでに回答にあるように sprintf や StringStream を使った方法でいいと思いますが、一応額面通りのキャストの方法も書いておきます。
C, C++ では char 型を文字列として使ってますが、 char 自体は 8 ビットの整数です。
整数型同士で、 int(普通 32 bit) から char(8 bit)のように情報落ちが発生するようなキャストには static_cast を使ってキャストします。
int foo = 3; char bar = static_cast<char>(foo);
投稿2014/07/20 08:01
総合スコア863
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
広くは「型変換」ですが、一般的には「キャスト」は型変換の一部を指していて、関数などを使わない型変換を指します。ですから言語処理系によって、「キャスト」の意味するところはマチマチです。
質問の意図が「単に型変換したい」なのか「キャスト的なもの」なのかによって回答は変わります。
例で示された php のプログラムでは明示的なキャストと暗黙的なキャストの両方が起こっています。php でのキャストが何かはマニュアルを参照してください。内部的には ZVAL を使って型変換を行っています。
php も C++ もキャストの概念自体は C から持ち込んできています。C での「キャスト」は数値変換です。詳しくはISO/IEC の C の仕様書あたりを見ていただくとして、文字列を表現している char に対して数値変換を起こします。intの65は 'A' になります。php を使っていたのであれば、これはおそらく期待していたものではないで
しょう。
さて C++ で「キャスト」が何を指すかですが、これはかなりバリエーションがあります。こちらも ISO/IEC C++ 2011 あたりを参照するのがよいと思います。
C, C++ では、いずれにせよ「キャスト」を使っては数値から文字列の変換は期待したものではないでしょう。関数を使って型変換するのが良いです。C++ では、C++ 標準ライブラリにあるものから選ぶのが簡単で、一般的には string を使います。
ちなみに sprintf は「Cライブラリ」で、もちろん C++ で使えますが、どちらかというと C++ では string を使うほうがメリットが多いです。
以上補足でした。
投稿2014/07/18 01:43

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/07/17 10:31