如何比较显示差异数的字符串
How to compare strings that shows number of differences
我是编程新手,所以如果我的问题难以理解,我很抱歉。
我有一个字符串模型这样的答案
string modelAnswer = "ABABACDA";
所以它应该是测验的答案,我正在尝试使它,如果用户的输入是 例如string studentAnswer = "ABADBDBB";
程序将显示我得到了 3 分,因为 studentAnswer 字符串的前三个字母与 modelAnswer 匹配。
您可以使用
标准算法std::inner_product
#include <iostream>
#include <string>
#include <numeric>
#include <functional>
int main()
{
std::string modelAnswer( "ABABACDA" );
std::string studentAnswer( "ABADBDBB" );
auto n = std::inner_product( modelAnswer.begin(), modelAnswer.end(),
studentAnswer.begin(), size_t( 0 ),
std::plus<size_t>(), std::equal_to<char>() );
std::cout << n << std::endl;
return 0;
}
程序输出为
3
假定字符串具有相同的长度。否则,应使用 less 字符串作为第一对参数。
例如
#include <iostream>
#include <string>
#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>
int main()
{
std::string modelAnswer( "ABABACDA" );
std::string studentAnswer( "ABADBDBB" );
auto n = std::inner_product( modelAnswer.begin(),
std::next( modelAnswer.begin(), std::min( modelAnswer.size(), studentAnswer.size() ) ),
studentAnswer.begin(), size_t( 0 ),
std::plus<size_t>(), std::equal_to<char>() );
std::cout << n << std::endl;
return 0;
}
如果您使用的是标准字符串,并且具有适当的包含(主要是 #include <string>
(,则可以编写一个简单的 for 循环来迭代每个字符,并比较它们。
std::string answer = "ABABACDA";
std::string stringToCompare = "ABADBDBB";
int score = 0;
for (unsigned int i = 0; (i < answer.size()) && (i < stringToCompare.size()); ++i)
{
if (answer[i] == stringToCompare[i])
{
++score;
}
}
printf("Compare string gets a score of %d.n", score);
上面的代码对我有用,打印以下结果:
Compare string gets a score of 3.
使用stringstream
,您可以一次将一个字符推送到临时变量中,并在循环中测试等效性。
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::istringstream model("ABABACDA");
std::istringstream student("ABADBDBB");
int diff = 0;
char m, s;
while ((model >> m) && (student >> s))
if (m != s) diff++;
std::cout << diff << std::endl; // 5
return 0;
}
相关文章:
- 字符串-C++后显示的随机字符
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 显示字符串的集合和子集
- 在将字符插入 2d 字符串时如何不显示空字符?
- 两个数组,int 和 string,如何显示带有对应 int 的字符串?
- 为什么我的 cout 在输出中没有显示字符串?
- 为什么在为其分配编号后无法显示我的字符串值?
- 分段故障 11,从类函数显示动态 C 字符串
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- 输出显示多个带整数的字符串值
- 字符串显示上的智能感知:npos = 18446744
- 如何从显示板将字符显示为字符串?
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 使用宏显示宏的字符串化内容
- 我将如何将数组的显示从数字更改为字符串C++
- 如何让我的构造函数和函数工作,以便我的 main() 能够同时显示字符串和 int 数据
- C 我将如何在字符串中显示字符作为数字
- 如何使用另一个字符串显示三个浮点数的最大值?
- 如何比较"4A4B4C"(字符串显示十六进制值)实际字符串"JKL"