这可能是一个非常快速的修复,但我无法弄清楚为什么我会收到错误。
代码:
#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’
答案 0 :(得分:4)
numCars
是一个字符串。它应该有整数类型(char,short,int,long)
答案 1 :(得分:2)
您无法将string
与数值进行比较。将用户输入读入unsigned int
。将您的代码更改为:
unsigned int numCars;
if( !(cin >> numCars) ) {
// invalid user input, handle it
}
for( unsigned int i = 0 ; i < numCars; ++i ) {
// ...
}
我还将i
的数据类型从double
更改为unsigned int
。没有理由使用浮点数,除非某种程度的汽车可以通过该交叉点。
答案 2 :(得分:0)
您无法将字符串与整数进行比较,或者您必须为此定义运算符。 numCars
应该是整数吗?