1 IntelliSense:没有合适的构造函数可以从“bool”转换为“std :: basic_string <char,std :: char_traits <char =”“>,std :: allocator <char>&gt;”</char> </char ,>

时间:2012-10-18 18:22:47

标签: c++ string validation

在尝试验证字符串时,我发现此错误。基本上我希望游戏不会继续,直到用户输入有效名称。约翰,玛丽等......而不是数字123434等...

这是我的代码:

string input1 ="What is your name ?\n";
    string name = getString(input1);//The error is in the getString.

bool getString(string str)
{
  for (int i = 0; i < str.size(); i++)
  {
   if (isdigit(str[i]))
      return false;
   }
  return true;
}

2 个答案:

答案 0 :(得分:2)

 string name = getString(input1);//The error is in the getString.

您无法将bool转换为字符串或将bool转换为string,但没有implicit conversion。也许你真的想要返回一个字符串。我不确定您的功能是getString,但是您返回bool

除非你有一个方便的名字列表,并将输入与数据库,文件等进行比较。比较输入可能很困难。 如果用户输入 Dsjdksdksdksdskd 会怎样?

帮助/回答您的问题:

if(isDigitInString(name))
{

}

答案 1 :(得分:0)

您尝试将bool值分配给字符串,因此出错。你应该写这样的东西 -

    if(getString(input1))
    {
       // code which continues the game
    } 
    else
    {
       // show some error message or ask for input again 
    } 
相关问题