与えられた変数の型を判断したいです。
調べても与えられた文字列が数値を含むかどうかや数値だけで構成されているかなどが出てきました。
(std::isdigitで文字列が数値だけで構成されているかわかる)
与えられた変数の型が実数、整数、文字列と判断するためにはどうしたら良いでしょうか。
(与えられた変数が文字列かどうか判断できれば良いです。)
C++でしたら変数の型は決まってますよね? テンプレートの話ですか?
「変数が文字列である」とはどういう状況を言うのか? という定義の説明が必要そうな…
条件次第かも。
1. 『123,Hello』のように数字が含まれているが、std::atoi関数では失敗するようなデータはどうなる想定か
2. 整数として使う場合の型は何か。
ただし、整数の場合を考慮しなくていいならそれでもいい
3. どういう風に使う予定か。
templateの引数かなんかでその都度変わるのか、ユーザ入力によるもので文字列として受け取って…等
少なくともこの3つは気になります。
それによって方法がガラリと変わるので。
質問は編集できるので、編集してください。
もう一つあった。
4. 与えられるデータはどのように渡されるか。WinAPI等で別のソフトから送られる系か、コマンドライン引数としてなのか、コンソールからなのか、GUI(WinAPIだとEDITとか)からなのか。つまり『元のデータは文字列でいいのか』ですね。
場合によってはchar型配列でも、文字列ではなく整数配列扱いだったりするし。
"123." は文字列? 実数? 整数? "2.3.4" は? "2e-3"は? ... まずは判定基準を規定してくださいな。
変数の型というのは例えばint a;であればaは整数型、string s;であればsは文字列型、というような話なのですが...
きっと、「文字列の内容が数値を表しているのかそうでないのか」という話じゃないかと思いながら。
voidでアドレス渡された後何にキャストしたいのかわからない的な…?
char *p; //未初期化のローカル変数
とかいうのがあったとして,
それが何かしらの紆余曲折を経て「型がわからん」状態になったとして…
そっからどうにかして型が char* だとわかったとして→それは「文字列」なのか? とかいう…
簡単なソースを提示してほしいところです。
日本語交じりでもいいからやりたいこと/聞きたい部分をC++ぽく記載してみてください。
「型を与える」んだからtemplateの話でtemplate<typename T> void f(T v)なfのなかでvって整数、浮動小数、文字列どーれだ、みたいな話なのかなー