前提・実現したいこと
C++の入門をしています。
疑似的なランダムな数として、変数のアドレスを使おうと思っているのですが、アドレスを10進数や文字列として扱う方法がすわかりません。
発生している問題・エラーメッセージ
エラー C2440 '初期化中': 'int *' から 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' に変換できません
該当のソースコード
C++
1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() { 6 7 int a; 8 //string s = &a; エラー 9 cout << a << endl; 10 cout << &a << endl; 11 12 return 0; 13}
なぜ、そんなことがしたいのか分かりません。
後、byte数気にしないと出来ませんよ。
>疑似的なランダムな数
C++なら、std::random_deviceではダメですか?
参考→ https://qnighy.hatenablog.com/entry/2015/07/01/235907
https://cpprefjp.github.io/reference/random/random_device.html
質問に情報が足りていませんでした。乱数を生成する方法が知りたいというわけではなくて、アドレスを文字列や10進数の変数として扱う方法が知りたいというのが目的でした。すみません。
わざわざアドレスを使わなければいけない理由はないです。好奇心です。
環境が分かりませんが、Unix系ならunsigned longに変換可能かと思いますが?
あとは、sprintf()やstd::strstreamなどで文字列に変換して下さい。
limits.hあるいは、climitsのULONG_MAXを確認して下さい。
疑似的なランダムな数、って書いてあったので質問は削除します。
アドレスを10進数として扱うというのは
・アドレスの値(番地)を10進数として表示したい
・アドレスが示す先(メモリ)の内容を10進数として表示したい
のどちらですか? 文字列についても同様です。
アドレスに値(番地)を10進数として表したいということです。
初めての質問で、色々わかりにくいところあり申し訳ないです(__)
回答4件
あなたの回答
tips
プレビュー