将scanf转换为cin

时间:2014-12-01 16:28:08

标签: c++ scanf cin

我正在阅读以下代码:evaluate.cpp来自以下网站:neural networr 我正在尝试将以下代码从scanf转换为cin

C:

 for(int a=0;a<64;a++) {
    if(scanf("%f+", &NNetwork.InputUnits[a])!=1) {
        printf("Input Error!<br>\n"); return -1;
    }
}

C ++:

for(int a=0;a<64;a++) {
       cin >> NNetwork.InputUnits[a];
       if (NNetwork.InputUnits[a] != 1) {
            cout << "Input Erro"; 
             return -1;
        }
    }

以下转换是否正确?

2 个答案:

答案 0 :(得分:1)

您的翻译不正确。

  • 你没有考虑&#39; +&#39;在输入中。
  • 原始比较检查扫描的参数数量 scanf

这是一个更正确的翻译:

    for (unsigned int a = 0; a < 64; ++a)
    {
      bool failure = true;
      if (cin >> NNetwork.InputUnits[a])
      {
        // Need to scan for the '+'.
        char plus;
        if (cin >> plus)
        {
// edit 1: added checking for '+' character after reading.
          if (plus == '+')
          {
            failure = false;
          }
        }
      }
      if (failure)
      {
        cerr << "Input Error!<br>\n";
        return -1;
      }
    }

答案 1 :(得分:0)

cin.fail()可用于检查状态。

此检查看起来不对: if(NNetwork.InputUnits [a]!= 1)