【问题标题】:pass string to bool function将字符串传递给布尔函数
【发布时间】:2016-08-28 08:12:41
【问题描述】:

如何通过将字符串传递给布尔函数来让 tis 工作?我需要让用户输入一系列字符串,并且在每次输入之后,程序应该根据字符串是否符合给定条件给出反馈。该字符串应包含“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;
}

【问题讨论】:

  • c++,抱歉

标签: c++ string function boolean


【解决方案1】:

stringCompare 接受char* 类型的参数,但您试图传递std::string。那是行不通的。

您可以使用std::stringc_str 方法来获取指向std::string 内部char 数组的const 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 2013-09-04
    • 2015-12-26
    • 2015-08-03
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多