0

这可能是一个非常快速的解决方法,但我无法弄清楚为什么会出现错误。

代码:

#include <iostream>
#include <queue>
#include <vector>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main(int argc, char *argv[]){

    srand ( time(NULL) );
    double randomNumber = (double)(rand() % 100) / 100;

    string numCars;

    cout << "\nPlease enter the number of cars going through the intersection:" << endl;
    cout << "->";
    getline (cin, numCars);

    for(double i=0; i<numCars; i++){
        cout << randomNumber << endl;
    }

}

错误是:

 traffic.cpp:80: error: no match for ‘operator<’ in ‘i < numCars’
4

3 回答 3

4

numCars是一个字符串。它应该是整数类型(char、short、int、long)

于 2012-12-03T22:07:11.003 回答
2

您不能将 astring与数值进行比较。将用户输入读入unsigned int. 将您的代码更改为:

unsigned int numCars;
if( !(cin >> numCars) ) {
  // invalid user input, handle it
}

for( unsigned int i = 0 ; i < numCars; ++i ) {
  // ...
}

我还将ifrom的数据类型更改doubleunsigned int。没有理由使用浮点数,除非以某种方式有一小部分汽车可以通过那个交叉路口。

于 2012-12-03T22:10:25.297 回答
0

您不能将字符串与整数进行比较,或者您必须为此定义运算符。应该numCars是整数?

于 2012-12-03T22:08:23.377 回答