C ++如何判断是否将值赋值给变量?

时间:2011-05-06 05:12:19

标签: c++

我正在创建一个简短的数据库应用程序,人们可以将变量分配给某些东西。

喜欢

cout << "Enter song ID#":
cin >> x;

但我想提示用户是否已在x中存储了值。有没有办法辨别最初存储在x中的垃圾值和其他值?

这样我可以做类似

的事情
cout << "Enter song ID#":
cin >> x;
if (isUsed(x))
    cout << "Do you want to overwrite this value?";

修改 x实际上是一个动态数组,所以我无法初始化它。或者我可以吗?

7 个答案:

答案 0 :(得分:2)

您必须初始化 x以保留用户无法生成的某些可识别值,或者使用在第一次x设置时翻转的布尔变量(然后检查该变量用于确定您的值是否有意义。)

答案 1 :(得分:2)

我相信你需要这个: http://www.codeproject.com/KB/cpp/value_t.aspx

所以你的代码看起来像是:

if( x.defined() )
  ...

答案 2 :(得分:1)

如果您能够偏离标准,则可以决定使用boost::optional

答案 3 :(得分:0)

没有。您所能做的就是使用另一个变量作为标记来跟踪是否已为其分配值。

答案 4 :(得分:0)

除非您知道先验您的程序会在x中存储哪种值,否则无法分辨。当然,垃圾总是有可能随机进入可接受的范围。

但你不需要忍受垃圾。将x初始化为某个可以向您发出“未使用”信号的已知值。

答案 5 :(得分:0)

您无法辨别最初存储在x和其他值中的垃圾值。但是你可以用这样的方式编写你的程序,以确保当你读取变量的值时,变量被初始化或分配一些值。

答案 6 :(得分:0)

初始化x ..

说,

int x = -1000;

现在每次检查该值-1000

当然,使用x初始化的值应该是用户不可能的值..