如何通过将字符串传递给布尔函数来获得工作效果?我需要让用户输入一系列字符串,并且在每次输入之后,程序应该根据字符串是否符合给定标准给出反馈。该字符串应包含" 1101"的子字符串,不带任何字母。谢谢你的帮助
#include <iostream>
#include <cstring> // for strstr
#include <string>
#include <cctype>
using namespace std;
bool stringCompare(char*y);
string str2;
int main ()
{
string str1, str2;
str1= "1101";
do
{
cout << "Please enter your string: " << endl;
cin >> str2;
while((stringCompare(str2)) == true)
{
if(strstr(str2.c_str(),str1.c_str())) // Primary string search function
{
cout << "ACCEPTED " << endl;
}
else
cout << "NOT ACCEPTED " << endl;
}
} while (2 > 1);
return 0;
}
bool stringCompare(char*y)
{
for(int a = 0; a < strlen(str2); a++)
{
if (!isdigit(str2[a]))
return false;
}
return true;
}
答案 0 :(得分:4)
stringCompare
采用char*
类型的参数,但您尝试传递std::string
。那不行。
您可以使用std::string
的{{3}}方法,以const char*
指向std::string
的内部char
数组。这意味着您必须将参数设置为const char*
。
或者,更好的是,您可以替换stringCompare
来引用std::string
:
bool stringCompare(string& y)
并将strlen(str2)
更改为str2.length()
。 (或者甚至更好,将整个循环替换为:
for(char& ch : str2) // range-based for-loop loops over the entire str2
{
if (!isdigit(ch))
return false;
}
)
此外,您无需比较返回值== true
。只是做:
while(stringCompare(str2))