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

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

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

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

Q&A

解決済

4回答

3983閲覧

c++でintをcharにキャストする方法

tetsujin

総合スコア124

C++

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

0グッド

4クリップ

投稿2014/02/20 14:41

c++でint型の数値をchar型にキャストするにはどうすればいいでしょうか?
phpとかだとこんな感じだと思うのですが。
$suuti=(int)3.4990000; echo $suuti;
`
c++での書き方がわかりません。

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

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

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

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

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

guest

回答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
usagi

総合スコア183

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

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

guest

0

ベストアンサー

以下のような感じでキャストできます。

`
int hoge = 10;
char moge[5];

sprintf(moge, "%d", hoge); // 変数mogeにhogeの値がchar型として格納される
`

投稿2014/03/03 09:36

red_shoes

総合スコア62

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

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

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

yohshiy

総合スコア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

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問