C++ 6 ;IntelliSense:没有来自“的合适转换函数”;std::string";至;int";存在
嘿,我正在验证一个字符串C++ 6 ;IntelliSense:没有来自“的合适转换函数”;std::string";至;int";存在,c++,string,validation,C++,String,Validation,嘿,我正在验证一个字符串 string getString(string q) { string input; do { cout << q.c_str() << endl; cin >> input; } while (!isalpha(input)); return input; } stringgetstring(stringq) { 字符串输入; 做 { 不能输入; }而(!
string getString(string q)
{
string input;
do
{
cout << q.c_str() << endl;
cin >> input;
} while (!isalpha(input));
return input;
}
stringgetstring(stringq)
{
字符串输入;
做
{
不能输入;
}而(!isalpha(输入));
返回输入;
}
使用while(!isalpha(input))时代码>输入给出了该错误
有人能帮我吗?该函数将整数作为参数,但您正在向它传递一个std::string
。如果字符串仅包含字母字符,则可以编写如下函数来测试:
bool noDigitInString(std::string str)
{
for (int i = 0; i < str.size(); i++)
{
if (isdigit(str[i]))
return false;
}
return true;
}
bool noDigitInString(std::string str)
{
对于(int i=0;i
该函数将整数作为参数,但您将传递一个std::string
。如果字符串仅包含字母字符,则可以编写如下函数来测试:
bool noDigitInString(std::string str)
{
for (int i = 0; i < str.size(); i++)
{
if (isdigit(str[i]))
return false;
}
return true;
}
bool noDigitInString(std::string str)
{
对于(int i=0;i
描述了问题所在,但这里有一个解决方案,它使用而不是编写自己的(示例需要C++11)
bool all_alpha(std::string const&s)
{
返回std::all_of(s.cbegin()、s.cend()、static_cast(std::isalpha));
}
仅当字符串中的所有字符都是字母时,上述函数才会返回true。如果您只想禁止使用数字字符,我会使用一个稍微不同的函数
bool any_digit( std::string const& s )
{
return std::any_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
bool任意数字(std::string const&s)
{
返回std::任意(s.cbegin()、s.cend()、静态强制转换(std::isdigit));
}
或
bool无数字(std::string const&s)
{
返回std::none_of(s.cbegin()、s.cend()、static_cast(std::isdigit));
}
使用这些函数来验证从用户接收的输入
如果不能使用C++11功能,可以修改这些函数来代替使用,并将find_If
的返回值与s.end()
进行比较,以确定成功/失败。描述了问题所在,但这里有一个解决方案可以使用而不是编写自己的(示例需要C++11)
bool all_alpha(std::string const&s)
{
返回std::all_of(s.cbegin()、s.cend()、static_cast(std::isalpha));
}
仅当字符串中的所有字符都是字母时,上述函数才会返回true。如果您只想禁止使用数字字符,我会使用一个稍微不同的函数
bool any_digit( std::string const& s )
{
return std::any_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
bool任意数字(std::string const&s)
{
返回std::任意(s.cbegin()、s.cend()、静态强制转换(std::isdigit));
}
或
bool无数字(std::string const&s)
{
返回std::none_of(s.cbegin()、s.cend()、static_cast(std::isdigit));
}
使用这些函数来验证从用户接收的输入
如果不能使用C++11功能,可以修改这些函数以改为使用,并将find_If
的返回值与s.end()
进行比较,以确定成功/失败。您希望通过其中的条件实现什么?isalpha
是一个C函数,只使用一个字符,不是?如果是这样,给它输入一个std::string
将不起作用,因为没有字符串可以char
或int
cast.@CodingMash我已经输入了您的名字吗?当用户输入名称时。我希望他们不能输入数字。如果suer没有只输入字符串。不断提示他们,直到他们这样做。您希望通过其中的条件实现什么?isalpha
是一个C函数,只需要一个字符,不是吗?如果是这样,给它输入一个std::string
将不起作用,因为没有字符串可以char
或int
cast.@CodingMash我已经输入了您的名字吗?当用户输入名称时。我希望他们不能输入数字。如果suer没有只输入字符串。一直提示他们,直到他们这样做。我尝试过,但当我完成此字符串输入1=“你叫什么名字?\n”;字符串名称=getString(input1);我在方法上有一个错误。?
不是字母数字字符,也不是\n
,因此isStringAlpha
将返回false。修改if
语句以满足您的需要确切显示我会修改if吗?有没有类似于isalpha的函数等等…我刚拿了一个?错误仍然在发生:是的,空格也不是字母数字字符。从对您问题的评论中,我了解到您只想排除数字,然后您可以说if(isdigit(str[I])
我尝试过这个方法,但当我完成这个字符串输入时,输入1=“您的名字是什么?\n”;字符串名称=getString(input1);我在方法上有一个错误。?
不是字母数字字符,也不是\n
,因此isStringAlpha
将返回false。修改if
语句以满足您的需要确切显示我会修改if吗?有没有类似于isalpha的函数等等…我刚拿了一个?错误仍然在发生:是的,空格也不是字母数字字符。从对您问题的评论中,我了解到您只想排除数字,然后您可以说if(isdigit(str[I])
我查找了一个现有函数,但没有考虑算法+1我寻找一个现有函数,但没有考虑算法+1.