C++ 如何使用布尔值验证我的函数?

C++ 如何使用布尔值验证我的函数?,c++,validation,storage,C++,Validation,Storage,本质上,我想验证这段代码。我试图把它放在主函数中,但它没有循环回输入。例如,如果您以错误的形式输入注释或以数字开头,我在代码中有一个if语句告诉用户错误 但是它跳过了第二个输入,而不是让用户重新输入他们的注释,但是我被告知我需要使用布尔值进行验证,但我实际上不知道如何很好地使用布尔值,因此解释如何将其正确链接到函数将很有帮助,同时还提出了一些问题作为注释(例如//问题:…) 问题:在这种情况下,如何不重复此代码来验证低音音符,即notenameB bool validatenotename (s

本质上,我想验证这段代码。我试图把它放在主函数中,但它没有循环回输入。例如,如果您以错误的形式输入注释或以数字开头,我在代码中有一个if语句告诉用户错误

但是它跳过了第二个输入,而不是让用户重新输入他们的注释,但是我被告知我需要使用布尔值进行验证,但我实际上不知道如何很好地使用布尔值,因此解释如何将其正确链接到函数将很有帮助,同时还提出了一些问题作为注释(例如//问题:…)

问题:在这种情况下,如何不重复此代码来验证低音音符,即
notenameB

bool validatenotename (string notenameM)
    {
        if (notenameM.length() != 2 && notenameM.length() != 3)
        {
            cout<<"invalid number of characters, note must be between 2 or 3 characters (example: A1 or C#2) : \n";
            return false;
        }
        else if (notenameM[0] != "a" && notenameM[0] != "b" && notenameM[0] != "c" && notenameM[0] != "d" && notenameM[0] != "e" && notenameM[0] != "f" && notenameM[0] != "g")
        {
            cout<<"First character of a note should be one of the following (A,B,C,D,E,F,G) \n";
            return false;
        }
        //question: here i want to enter an if statement making sure that when the user enters c#,d#,f#,g#,or a# it will only allow those notes to be 3 characters (the third being a number for octaves) and also the user cant put a b# or e#?
        else if (
    }
do
{


cout << endl
<< " 1) Melody.\n"
<< " 2) Bass.\n"
<< " 3) Playback Melody.\n"
<< " 4) Playback Bass.\n"
<< " 5) Exit.\n"
<< " Choose one of the above and enter the corresponding number then press enter:  ";
cin >> choice;

switch (choice)
{
case 1: 

    { 
        string notenameM;
        int numbernotesM;
        float notelengthM;
        string notename;


        cout<<"Enter number of notes you want: ";
        cin>>numbernotesM;

        for( int i=0; i < numbernotesM; i++)
        {
            cout<<"Enter note"<<i+1<<": ";
           cin>>notenameM;


        }


        for( int i=0; i < numbernotesM; i++)
        {
            cout<<"enter note length for "<<i+1<<": \n";
            cin>>notelengthM;

        }


    }

break;

case 2:
    {
        string notenameB;
        int numbernotesB;
        float notelengthB;
        string notename;

        cout<<"Enter number of notes you want: \n";
        cin>>numbernotesB;

            for( int i=0; i < numbernotesB; i++)
        {
            cout<<"Enter note"<<i<<": \n";
        cin>>notenameB;
        }

        for( int i=0; i < numbernotesB; i++)
        {
            cout<<"enter note length for "<<i<<": \n";
            cin>>notelengthB;
        }
    }
break;
bool validatenotename(字符串notenameM)
{
如果(notenameM.length()!=2和¬enameM.length()!=3)
{

cout在下面的语句中:

else if (notenameM[0] != "a" && notenameM[0] != "b" && notenameM[0] != "c"
        && notenameM[0] != "d" && notenameM[0] != "e" && notenameM[0] != "f" 
        && notenameM[0] != "g")

notenameM[0]
只是一个您试图与字符串进行比较的字符,即
“a”
实际上是存储在内存中的带有附加空终止符的字符串,如
|a |\0 |
。像
'a'
一样更改所有字符串。请在发布之前去掉所有不必要的代码。我不太确定什么是不必要的我以为我只放了我认为重要的代码?例如,任何输入似乎都是不必要的。Y你可以硬编码你想象用户输入的值。这就是我对输入感到困惑的地方这就是为什么我把它放在那里我假设我们说的是控制台输入我想知道这些CIN函数是否按顺序存储输入?使用向量会更有效吗?因为我想构建程序我最终会将注释蜂鸣器发送给用户您正在讨论的函数接受一个字符串,它不关心该字符串来自何处。我的代码不断出现错误我尚未解决错误c2040:'!=:int与'cont char[2]的间接寻址级别不同“那是什么?什么是cont?你是说const吗?@kas我猜你对双引号中的字符串文字而不是单引号中的字符进行了错误的比较操作。是的,它不断出现许多错误,说明了同样的事情