我一直在使用visual studio 2012控制台模式开发一个C ++项目,并且我一直在使用cin
函数获得这个奇怪的持久性错误。
在>>
下,我得到一条红线,程序告诉我no operator matches these operands
。
我已经用一个单独的方法初始化了所有数组元素。
这是一个片段示例(实际代码包含更多变量):
for (int i = 0; i < 14; i++)
{
cout << "For taxi: " << i+1 << "Please input the taxi rank they are currently parked at, if at all ('Train Station', 'South Walls' or 'Chell Road')" << endl;
cin >> allTaxiDetails[i].taxiRank;
}
allTaxiDetails
是一个数据类型为“taxiDetails
”的数组,就是这种结构:
struct taxiDetails {
string taxiDriverSurname;
int taxiID;
int taxiCoordinates;
int numberOfSeats;
bool taxiContainsCustomerYesNo;
bool WheelChairAccessibleVehicle;
string taxiRank;
fareDetails fareDetailsForTaxi;
bool taxiAvaliable;
};
答案 0 :(得分:25)
问题是string
没有operator>>
方法,但确实如此......
#include <string>
?getline(std::cin, allTaxiDetails[I].taxiRank, '\n');
。operator>>
。答案 1 :(得分:8)
您似乎正在尝试读取类型为std::string
的对象,您以某种方式获取了类定义(例如,通过包含<iostream>
)但您没有获得所有必要的操作!确保包含<string>
:
#include <string>
// ...
一些标头提供了一些其他类的定义但实际上并没有使用整个标头来获取定义,这是很常见的。由于std::string
在某些地方需要声明IOStreams,因此很可能会定义它,但可能不会包含它的完整标题。
答案 2 :(得分:6)
我相信忘了 #include&lt;字符串&gt; 此关键标头是错误源。它发生在我身上作为C ++的初学者。