Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查字符串的长度 我是C++初学者。我们正在做一个项目,输入员工的名字、姓氏和SSN。以下是我所做的: #include <iostream> #include <stdexcept> #include "Employee.h" using namespace std; Employee::Employee(const string &first, const string &last, const string &ssn) { firstName = first; lastName = last; SSN = ssn; } void Employee::setFirstName(const string &first) { firstName = first; } string Employee::getFirstName() const { return firstName; } void Employee::setLastName(const string &last) { lastName = last; } string Employee::getLastName() const { return lastName; } void Employee::setSSN(const string &ssn) { if (ssn.length() == 9) { SSN = ssn; } else { cout << "Please enter SSN again: " << endl; } } string Employee::getSSN() const { return SSN; } void Employee::print() const { cout << "Employee: " << getFirstName() << ' ' << getLastName() << "\nSocial Security Number: " << getSSN(); } #包括 #包括 #包括“Employee.h” 使用名称空间std; Employee::Employee(常量字符串和第一个、常量字符串和最后一个、常量字符串和ssn) { firstName=first; lastName=last; SSN=SSN; } void Employee::setFirstName(常量字符串&第一个) { firstName=first; } 字符串Employee::getFirstName()常量 { 返回名字; } void Employee::setLastName(常量字符串和last) { lastName=last; } 字符串Employee::getLastName()常量 { 返回姓氏; } void Employee::setSSN(常量字符串和ssn) { 如果(ssn.length()=9) { SSN=SSN; } 其他的 { cout_C++_String_String Length - Fatal编程技术网

检查字符串的长度 我是C++初学者。我们正在做一个项目,输入员工的名字、姓氏和SSN。以下是我所做的: #include <iostream> #include <stdexcept> #include "Employee.h" using namespace std; Employee::Employee(const string &first, const string &last, const string &ssn) { firstName = first; lastName = last; SSN = ssn; } void Employee::setFirstName(const string &first) { firstName = first; } string Employee::getFirstName() const { return firstName; } void Employee::setLastName(const string &last) { lastName = last; } string Employee::getLastName() const { return lastName; } void Employee::setSSN(const string &ssn) { if (ssn.length() == 9) { SSN = ssn; } else { cout << "Please enter SSN again: " << endl; } } string Employee::getSSN() const { return SSN; } void Employee::print() const { cout << "Employee: " << getFirstName() << ' ' << getLastName() << "\nSocial Security Number: " << getSSN(); } #包括 #包括 #包括“Employee.h” 使用名称空间std; Employee::Employee(常量字符串和第一个、常量字符串和最后一个、常量字符串和ssn) { firstName=first; lastName=last; SSN=SSN; } void Employee::setFirstName(常量字符串&第一个) { firstName=first; } 字符串Employee::getFirstName()常量 { 返回名字; } void Employee::setLastName(常量字符串和last) { lastName=last; } 字符串Employee::getLastName()常量 { 返回姓氏; } void Employee::setSSN(常量字符串和ssn) { 如果(ssn.length()=9) { SSN=SSN; } 其他的 { cout

检查字符串的长度 我是C++初学者。我们正在做一个项目,输入员工的名字、姓氏和SSN。以下是我所做的: #include <iostream> #include <stdexcept> #include "Employee.h" using namespace std; Employee::Employee(const string &first, const string &last, const string &ssn) { firstName = first; lastName = last; SSN = ssn; } void Employee::setFirstName(const string &first) { firstName = first; } string Employee::getFirstName() const { return firstName; } void Employee::setLastName(const string &last) { lastName = last; } string Employee::getLastName() const { return lastName; } void Employee::setSSN(const string &ssn) { if (ssn.length() == 9) { SSN = ssn; } else { cout << "Please enter SSN again: " << endl; } } string Employee::getSSN() const { return SSN; } void Employee::print() const { cout << "Employee: " << getFirstName() << ' ' << getLastName() << "\nSocial Security Number: " << getSSN(); } #包括 #包括 #包括“Employee.h” 使用名称空间std; Employee::Employee(常量字符串和第一个、常量字符串和最后一个、常量字符串和ssn) { firstName=first; lastName=last; SSN=SSN; } void Employee::setFirstName(常量字符串&第一个) { firstName=first; } 字符串Employee::getFirstName()常量 { 返回名字; } void Employee::setLastName(常量字符串和last) { lastName=last; } 字符串Employee::getLastName()常量 { 返回姓氏; } void Employee::setSSN(常量字符串和ssn) { 如果(ssn.length()=9) { SSN=SSN; } 其他的 { cout,c++,string,string-length,C++,String,String Length,std::string::length()是用于查找长度的函数,std::string::empty()用于检查字符串是否为空 if(SSN.length() < 9 && !SSN.empty()) { //Need C++11 and above for this kind for loop for(auto &x: SSN) { if(std::isdigit(x)) { //valid S

std::string::length()是用于查找长度的函数,std::string::empty()用于检查字符串是否为空

if(SSN.length() < 9 && !SSN.empty())
{
   //Need C++11 and above for this kind for loop
   for(auto &x: SSN)
   {
        if(std::isdigit(x))
        {
          //valid SSN
         }
   }

}
if(SSN.length()<9&!SSN.empty())
{
//这种for循环需要C++11及以上版本
用于(自动和x:SSN)
{
如果(标准::isdigit(x))
{
//有效SSN
}
}
}
std::string::length()是用于查找长度的函数,std::string::empty()用于检查字符串是否为空

if(SSN.length() < 9 && !SSN.empty())
{
   //Need C++11 and above for this kind for loop
   for(auto &x: SSN)
   {
        if(std::isdigit(x))
        {
          //valid SSN
         }
   }

}
if(SSN.length()<9&!SSN.empty())
{
//这种for循环需要C++11及以上版本
用于(自动和x:SSN)
{
如果(标准::isdigit(x))
{
//有效SSN
}
}
}

要检查字符串中的9位数字,没有简单易行的解决方案

我的建议分为两步:

  • 验证长度是否为9
  • 验证字符串是否为整数
注意:
else
子句中的代码不适用于“123Apple4”等情况。感谢@stophen的启发。将代码保留在答案中,以便与注释同步

在代码中,这将是:

bool is_valid = true;
if (ssn.length() != 9)
{
  is_valid = false;
}
else
{
  std::istringstream ssn_stream;
  ssn_stream.str(ssn);
  unsigned int value;
  if (!(ssn_stream >> value))
  {
    is_valid = false;
  }
}
另一种选择是使用循环:

if (ssn.length() != 9)
{
  is_valid = false;
}
else
{
  is_valid = true;
  for (unsigned int i = 0U; i < 9; ++i)
  {
    if (!isdigit(ssn[i]))
    {
      is_valid = false;
      break;
    }
  }
}
if(ssn.length()!=9)
{
is_valid=false;
}
其他的
{
is_valid=true;
用于(无符号整数i=0U;i<9;++i)
{
if(!isdigit(ssn[i]))
{
is_valid=false;
打破
}
}
}
编辑1:正则表达式
如果编译器支持C++正则表达式,则可以使用正则表达式来定义SSN。然后检查字符串的内容是否匹配正则表达式。< /P> < P>没有简单的解决方案来检查9个数字的字符串。 我的建议分为两步:

  • 验证长度是否为9
  • 验证字符串是否为整数
注意:
else
子句中的代码不适用于“123Apple4”等情况。感谢@stophen的启发。将代码保留在答案中,以便与注释同步

在代码中,这将是:

bool is_valid = true;
if (ssn.length() != 9)
{
  is_valid = false;
}
else
{
  std::istringstream ssn_stream;
  ssn_stream.str(ssn);
  unsigned int value;
  if (!(ssn_stream >> value))
  {
    is_valid = false;
  }
}
另一种选择是使用循环:

if (ssn.length() != 9)
{
  is_valid = false;
}
else
{
  is_valid = true;
  for (unsigned int i = 0U; i < 9; ++i)
  {
    if (!isdigit(ssn[i]))
    {
      is_valid = false;
      break;
    }
  }
}
if(ssn.length()!=9)
{
is_valid=false;
}
其他的
{
is_valid=true;
用于(无符号整数i=0U;i<9;++i)
{
if(!isdigit(ssn[i]))
{
is_valid=false;
打破
}
}
}
编辑1:正则表达式
如果编译器支持C++正则表达式,可以使用正则表达式来定义SSN。然后检查字符串的内容是否匹配正则表达式。

< p>这个问题的紧凑解决方案:

bool ValidSSN(const std::string& ssn) {
  if (ssn.size() != 9) return false;
  return ssn.find_first_not_of("0123456789") == ssn.npos;
}

此问题的紧凑解决方案:

bool ValidSSN(const std::string& ssn) {
  if (ssn.size() != 9) return false;
  return ssn.find_first_not_of("0123456789") == ssn.npos;
}


检查字符串长度和验证字符串是两个不同的问题。是否要清理一下帖子?@Axalo:停止在评论中回答Dude检查字符串长度和验证字符串是两个不同的问题。是否要清理一下帖子?@Axalo:停止在评论中回答Dude这不起作用。字符串“HateTaxes”包含9个字符,但没有数字。它不是有效的美国社会安全号码(ssn)。您的解决方案无法处理“123-45-5678”的标准格式,连字符会使字符串变长。@ThomasMatthews的问题更为具体,“ssn(最简单的方法)确保它是9个数字”您的答案如何?…确保它是9个数字“?我希望使用
std::isdigit
或其他数字检查方法。@ThomasMatthew您能告诉我怎么做吗?这样不行。字符串“HateTaxes”包含9个字符,但没有数字。它不是有效的美国社会安全号码(ssn)。您的解决方案无法处理“123-45-5678”的标准格式。”,连字符将使字符串变长。@ThomasMatthews的问题更具体,“SSN(最简单的方法)确保它是9位数”您的答案如何“…确保它是9位数”?我希望使用
std::isdigit
或其他数字检查方法。@ThomasMatthew您能告诉我怎么做吗?您的第一种方法是错误的。如果我输入ssn_stream.str(“123*”)StEntrys:/Cords>语句为字符串长度为9,因此“123 *”长度为4,并设置“代码> ISHORACE < /COD> > <代码> false <代码>,不进入第二次检查。如果数据如下:将发生什么:SSN=“123×***”谢谢你指出了一个不起作用的边界情况。修改后的答案。你的第一个方法是错误的。如果我给输入SSNStrix.STR(“123 *”),它会认为它是一个有效的SSN.@ StEnEn:唯一的方法是进入<代码> STD::Ittring String 语句是字符串长度为9。因此“123 *”。长度为4,并将
设置为有效
为假
,且不进入第二次检查。如果数据如下所示,将发生什么:ssn=“123*******”感谢您指出一个不起作用的边界情况。修改答案。