字符串class ==操作符不能正常工作
String class == operator not working properly
我试图比较我的字符串缓冲区变量中的数据到if语句中的字符串字量。由于某种原因,它适用于第一种情况,但不适用于第二或第三种情况,即使输入文件具有正确的格式(也没有空格)。问题是什么呢?
while(getline(input, check)) //calculates size of sections array and rooms array
{
count++;
cout<<check<<endl;
if(check == "-- building room_number capacity")
{
Section1 = true;
pos[0] = count;
if(pos[0] != 1)
return 0;
}
else if (check == "-- ID prefix course# sect# #minutes #mtgsperweek #students")
{
Section1 = false;
Section2 = true;
pos[1] = count;
if(blanks > 1 || blanksPos != pos[1] - 1)
return 0;
else
blanks = 0;
}
else if (check == "-- ID days_constraint start_contraint end_constraint")
{
Section2 = false;
Section3 = true;
pos[2] = count;
if(blanks > 1 || blanksPos != pos[2] - 1)
return 0;
else
blanks = 0;
}
else if (Section1 && check != "-- building room_number capacity")
{
if(check.size() == 0)
{
blanks++;
blanksPos =count;
}
else
roomsize++;
}
else if (Section2 && check != "-- ID prefix course# sect# #minutes #mtgsperweek #students")
{
if(check.size() == 0)
{
blanks++;
blanksPos =count;
}
else
sectionsize++;
}
else if (Section3 && check != "-- ID days_constraint start_contraint end_constraint")
{
if(check.size() == 0)
{
return 0;
}
else
constraintsize++;
}
cout<<"R:" << roomsize << " S:" << sectionsize << " C:" << constraintsize << " blanks :" << blanks<<endl ;
}
一些输出:欢迎来到课堂作业计划!输入输入文件:input.txt
-- building room_number capacity
R:0 S:0 C:0 blanks :0
SAL 210 30
R:1 S:0 C:0 blanks :0
OHE 100 120
R:2 S:0 C:0 blanks :0
OHE 120 50
R:3 S:0 C:0 blanks :0
R:3 S:0 C:0 blanks :1
-- ID pre course# sect# #minutes #meetingsperweek #students
R:4 S:0 C:0 blanks :1
20001 CSCI 101 01 110 2 40
R:5 S:0 C:0 blanks :1
20002 CSCI 101 02 110 2 60
R:6 S:0 C:0 blanks :1
20003 CSCI 101 03 110 2 100
R:7 S:0 C:0 blanks :1
20004 CSCI 103 01 90 2 50
R:8 S:0 C:0 blanks :1
20005 CSCI 103 02 90 2 50
R:9 S:0 C:0 blanks :1
20006 CSCI 103 03 90 2 75
R:10 S:0 C:0 blanks :1
20007 CSCI 104 01 80 2 50
R:11 S:0 C:0 blanks :1
20008 CSCI 104 02 80 2 50
R:12 S:0 C:0 blanks :1
20009 CSCI 109 01 90 1 25
R:13 S:0 C:0 blanks :1
20010 CSCI 109 02 90 1 25
R:14 S:0 C:0 blanks :1
20011 CSCI 109 03 90 1 25
R:15 S:0 C:0 blanks :1
20012 CSCI 109 04 90 1 25
R:16 S:0 C:0 blanks :1
R:16 S:0 C:0 blanks :2
-- ID days_constraint start_contraint end_constraint
正如您所看到的,它没有检测到"——ID pre course# sect# #minutes #meetingsperweek #students",尽管检查输出的结果与测试用例相同。什么好主意吗?
正如在评论和之前的回答中已经指出的那样,您在代码中拼写错误了一些文本。在比较字符串时,提供精确匹配非常重要,否则将返回false(或0)。
您只需要仔细比较文件中写入的内容。
例如:
文件内容:"-- ID pre course# sect# #minutes #meetingsperweek #students"
代码比较:
"-- ID prefix course# sect# #minutes #mtgsperweek #students"
这两个字符串是不同的,因此比较它们将返回false(或0)。
避免此类错误的一个简单方法是(正如已经建议的那样)在比较时从文件中复制粘贴精确的字符串。
从文本文件中复制并粘贴这一行,这样你就不会把中的单词拼错了。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- sdl软件渲染器不工作,工作在硬件加速的一个
- C++程序已停止工作-求解常微分方程