【发布时间】:2014-11-23 14:35:06
【问题描述】:
我有一个更大的任务,其中包含这个功能。以下是说明;
定义一个名为 isPartOf 的 C++ 函数,带有两个指向 C 字符串的参数指针 (即 char * 类型,不是来自尚未详细声明的 C++ 数据 输入 string ) 并返回一个布尔值。
本质上,函数应该检查字符串是否指向它 由第一个参数指针,是由指向它的字符串的一部分 第二个参数指针。
例子:isPartOf("心脏", "高血压 heart disease") 返回 true 返回 isPartOf("screw", "Case Involving 轮椅") 返回错误的返回。
我学习 C 一年了,才开始学习 C++,我发现很难理解 'char *' 和一般参数的使用。我花了一段时间才理解指针,现在参数让我失望了。我已经用可能所有可能的 * 和 & 迭代尝试了这段代码,只是想看看它是否可以工作,但它没有。
#include <iostream>
using namespace std;
void isPartOf(char *, char *);
int main()
{
char * Word;
char * Sentence;
cout << "Please enter a word: ";
cin >> Word;
cout << endl << "Please enter a sentence: ";
cin >> Sentence;
cout << endl;
isPartOf(Word, Sentence);
if (isPartOf(Word, Sentence))
{
cout << "It is part of it";
}
else
{
cout << "It is not part of it";
}
}
void isPartOf(char a, char b)
{
}
我的两个主要问题是;
- 在这种情况下参数如何工作?
- 是否有一个函数可以检查字符串中是否存在字符串?如果没有,我应该如何开始编写此类函数?
【问题讨论】:
-
您在顶部的声明与底部的定义不匹配。参数类型应该相同。
-
简单解决方案:遍历两个字符串。当您在一个字符串中找到与另一个匹配的字符时,增加一个计数变量。如果没有,请将其重置为零。在循环结束时检查 count 是否等于另一个字符串的长度。
-
回答 #2 - 在 C 中,是的:strstr。看看 boyer-moore 算法或en.wikipedia.org/wiki/…。
-
输入时,你在哪里分配内存来保存单词和句子的字符?你已经声明了指针,但没有让它们指向任何东西。
cin函数将输入字符并将它们放置在指针Word指向的位置。在你输入之前它指向哪里?
标签: c++ string pointers parameters