C++ 如何将字符串与字符串数组中的元素进行比较?
我有一个C++ 如何将字符串与字符串数组中的元素进行比较?,c++,arrays,string,for-loop,compare,C++,Arrays,String,For Loop,Compare,我有一个数组,其中包含教室的数据和不同时间的不同氧气读数。因此,用户必须输入特定的教室和时间,我的程序将打印出当时教室的氧气读数。但是,我有一个错误,无法将字符串数组与字符串进行比较。有人能帮我吗 cout << "Please enter the classroom: "; string classroom; cin >> classroom; cout << "Please enter the time: "; string time; cin >&
数组
,其中包含教室的数据和不同时间的不同氧气读数。因此,用户必须输入特定的教室和时间,我的程序将打印出当时教室的氧气读数。但是,我有一个错误
,无法将字符串数组
与字符串
进行比较。有人能帮我吗
cout << "Please enter the classroom: ";
string classroom;
cin >> classroom;
cout << "Please enter the time: ";
string time;
cin >> time;
cout << endl;
string myData[6][13] = {
{ "EN10-5-56" , "500", "700", "2000", "1850", "2000", "800", "750", "2300", "1900", "1600", "750", "700" },
{ "EN10-5-65" , "550", "1600", "1700", "780", "1980", "700", "750", "2300", "780", "800", "650", "550" },
{ "EN14-5-83" , "600", "700", "2000", "1850", "2000", " 600", "650", "700", "200", "800", "750", "700" },
{ "EN14-5-69" , "900", "600", "1950", "780", "800", "590", "620", "760", "1900", "1890", "2000", "700" },
{ "EN18-5-112", "550", "1670", "2000" , "680", "900", "1500", "1800", "2500", "779", "800", "650", "650" },
{ "EN18-5-118", "800", "1890", "2300", "1850", "2000", "800", "750", "1700", "560", "1300", "1500", "850" },
}; // row x column (class x time)
// row x column
for (int i = 0; i < 6; i++) // classrooms (row)
{
for (int j = 0; j < 13; j++)
{
if (myData[i] == classroom) // ERROR HERE
{
cout << myData[i] << endl;
}
}
}
cout>教室;
时间;
coutmyData
是一个二维数组,但您只提供了一个一维说明符
myData[i]
将为您提供一个字符串数组
,而不是一个字符串
实例。您正在为列使用i
,因此还必须为行提供j
if( myData[i][j] == classroom ) {
cout << myData[i][j] << endl;
}
if(myData[i][j]==教室){
cout它是一个2D矩阵。您不能以myData[i]
的形式访问它的元素。您必须同时给出这两个索引。
将myData[i]
替换为myData[i][0]
,将其与教室进行比较。
将if条件下的myData[i]
替换为myData[i][j]
它现在应该可以工作了。myData
不是1维数组
,而是2维数组
因此,您必须尝试以下方法:
cout << "Please enter the classroom: ";
string classroom;
cin >> classroom;
cout << "Please enter the time: ";
string time;
cin >> time;
cout << endl;
string myData[6][13] = {
{ "EN10-5-56" , "500", "700", "2000", "1850", "2000", "800", "750", "2300", "1900", "1600", "750", "700" },
{ "EN10-5-65" , "550", "1600", "1700", "780", "1980", "700", "750", "2300", "780", "800", "650", "550" },
{ "EN14-5-83" , "600", "700", "2000", "1850", "2000", " 600", "650", "700", "200", "800", "750", "700" },
{ "EN14-5-69" , "900", "600", "1950", "780", "800", "590", "620", "760", "1900", "1890", "2000", "700" },
{ "EN18-5-112", "550", "1670", "2000" , "680", "900", "1500", "1800", "2500", "779", "800", "650", "650" },
{ "EN18-5-118", "800", "1890", "2300", "1850", "2000", "800", "750", "1700", "560", "1300", "1500", "850" },
}; // row x column (class x time)
// row x column
for (int i = 0; i < 6; i++) // classrooms (row)
{
for (int j = 0; j < 13; j++)
{
if (myData[i][j] == classroom) // NO ERROR HERE
{
cout << myData[i] << endl;
}
}
}
cout>教室;
时间;
cout错误是什么?错误C2679二进制“==”:未找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)myData
不是string
的数组,因此myData[i]
不是一个字符串
,因为您试图在if
语句中使用它。它是一个字符串数组
。所以您正在将字符串
与字符串
数组
进行比较。哦!谢谢!我忘了我的数组需要两个索引。啊!好的,谢谢!那么,我可以问一下如何使用美国的时间吗er输入,连同教室,打印出阅读??谢谢帮助!