gpt4 book ai didi

c++ - 一个字符串开始另一个字符串是什么意思? C++

转载 作者:太空狗 更新时间:2023-10-29 23:52:14 24 4
gpt4 key购买 nike

我正在尝试自己完成一本 o'reilly 教科书,但问题对我来说开始变得非常困难。我阅读了编程问题的每一页,所以我应该理解。但是有人可以解释这个问题是什么意思吗? “编写一个函数 begins(string1, string2),如果 string1 开始于 string2,则返回 true。编写一个程序来测试该函数”

让我们从我所知道的开始,我知道如何创建一个函数并在 main 中调用它。我不知道的是一个字符串开始另一个字符串意味着什么,我什至会如何去做。一个解释会很好。如果您提供任何代码作为示例,请不要回答整个功能或程序。我真的很想学习,想自己完成这个项目。谢谢。


感谢大家的帮助,但是现在,我在尝试运行我的程序时遇到了问题。我为 string1 键入“hel”,为 string2 键入“hello”。有什么建议吗?

#include <iostream>
#include <string>

std::string string1;
std::string string2;
bool begins(std::string string1, std::string string2);


int main()
{
std::cout << "Please enter two strings: ";
std::getline(std::cin, string1);
std::getline(std::cin, string2);

begins(string1, string2);
std::cout << string1 << "begins" << string2;


return 0;

bool begins(std::string string1, std::string string2)
{
if (begins(string1, string2) == true)
return true;

else
return false;
}

最佳答案

String begins another string 是表示一个字符串是另一个字符串的前缀的另一种方式。下面是一个例子:hellhello 的前缀。

检查算法相对简单:开始逐个字符地比较字符串,直到 (1) 候选前缀字符串结束,或 (2) 您发现差异。如果前缀在您发现差异之前结束,则返回 true;否则,返回 false:

bool begins(std::string string1, std::string string2)
{
if (string1.size() > string2.size) return false;
for (int i = 0 ; i != string1.size() ; i++) {
if (string1[i] != string2[i]) {
return false;
}
}
return true;
}

测试这个函数应该检查两种“主流”情况(即当 string1string2 的前缀时,当 string1 不是string2 的前缀)和几个“极端情况”:

  • 第一个字符串为空 - 返回true,因为空字符串是任何字符串的前缀。
  • 第二个字符串为空 - 当第一个字符串也为空时返回true,否则返回false
  • 第一个字符串比第二个字符串长 - 即使您看到较短的第二个字符串和较长的“前缀”完全匹配,也返回 false。<

关于c++ - 一个字符串开始另一个字符串是什么意思? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16819226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com