在字符串向量中查找部分字符串
Find Partial String in String Vector
我有一个学生向量,每个元素都由ID和测试答案组成。
ABCTFTFTF(ABC=ID,TFTFTF=答案)
我试图只检索TFTFTF的块,并将它们与由正确答案字符串组成的字符串进行比较。
我知道它一定是:
-
学生[i]
-
创建子串(答案的开始=位置10,结束于位置30)
-
比较子字符串
-
比较
但我在语法上真的很吃力,有人能给我指个正确的方向吗?
- 编辑
已尝试:
void getResults()
{
string found;
for(int i = 0; i < 150; i++)
{
found = students[i].find(answers);
if(found == answers)
{
cout << "Student: " << i << "Passed" << endl;
}
else
{
cout << "Student: " << i << "Failed" << endl;
}
}
}
个人项目——非家庭作业
我正在关注这个每日的c++项目线程:
http://www.cplusplus.com/forum/beginner/75558/
模拟数据:
OMXIZGWA TTFTFTFFTFTTFFFTTFTF
XKVNYUVZ F FTFFFFFT TFFTTTFFF
GGVDSSTQ TFFFTF FTTF TF TFFT
XPYDXVIQ FFTTFT FTFT TFFTTTFT
XVFUMFZL TTFFTFFTFFTFF FFTFFT
(白色字符=未给出答案)
*编辑答案
void getResults()
{
string found;
string foundSubString;
for(int i = 0; i < 150; i++)
{
found = students[i];
foundSubString = found.substr (9,20);
if(foundSubString == answers)
{
cout << "Student: " << i << "Passed" << endl;
}
else
{
cout << "Student: " << i << "Failed" << endl;
}
}
假设:
- 所有ID都是唯一的
- 每个ID都与一个答案字符串相关联
这听起来像是字典的工作。C++STL提供了一个方便的CCD_ 1。
std::string answerKey = "TTFFTF"
std::map<std::string, std::string> studentAnswers;
studentAnswers["student1"] = "TFTTTF";
studentAnswers["student2"] = "FFTFTF";
// more students....
既然已经定义了数据,就可以定义一个比较函数了。假设你想找到错误的数量,你可以定义一个这样的原型:
int compareAnswer(const std::string& correctAnswer, const std::string& valiantAttempt);
(注意:很方便,这实际上正是string.h,strcmp
中的老派C函数所做的)
然后使用功能:
cout << "Student1 has "
<< compareAnswer(answerKey, studentAnswers["student1"])
<< " errors" << endl;
当然,您可能会使用for
循环,并可能从文件中读取数据,等等,但我希望这能让您朝着正确的方向前进。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 按类型与字符串查找对象
- 使用C RTTI(内置)通过字符串查找功能指针
- 关于获取行和字符串查找函数的问题
- 字符串查找方法找不到第一字母
- C++ 字符串.查找()
- 遇到字符串::查找的问题
- 将一个数组作为子字符串查找到另一个数组中
- 字符串查找第一个非的 C++ 问题
- 如何将通配符与字符串::查找一起使用
- 字符串::查找问题 (C++)
- 性能标准::strstr vs. 标准::字符串::查找
- C++字符串::查找崩溃应用程序
- 使用字符串查找单词的正确方法是什么
- 如何在<string>没有 std::string 中介的情况下制作一个支持通过 C 字符串查找的集合?
- 使用C++根据行中的第一个字符串查找行(仅一个)
- Borland字符串::查找bug
- std::map如何通过字符串查找元素
- 字符串查找函数返回奇数
- 如何使用子字符串查找数字行的正确部分