当前位置: 首页 > 面试题库 >

C ++:脚本中发生了异常:basic_string :: _ S_construct NULL无效

司空朝
2023-03-14
问题内容

我从数据库函数返回字符串或NULL到主程序,有时会从异常中得到此错误:

basic_string::_S_construct NULL not valid

我认为这是因为从数据库函数返回NULL值?有任何想法吗???

string database(string& ip, string& agent){
  //this is just for explanation
  .....
  ....

  return NULL or return string

}

int main(){
   string ip,host,proto,method,agent,request,newdec;
   httplog.open("/var/log/redirect/httplog.log", ios::app);

   try{
      ip = getenv("IP");
      host = getenv("CLIENT[host]");
      proto = getenv("HTTP_PROTO");
      method = getenv("HTTP_METHOD");
      agent = getenv("CLIENT[user-agent]");

      if (std::string::npos != host.find(string("dmnfmsdn.com")))
         return 0;

      if (std::string::npos != host.find(string("sdsdsds.com")))
         return 0;

      if (method=="POST")
         return 0;

      newdec = database(ip,agent);
      if (newdec.empty())
         return 0;
      else {
         httplog << "Redirecting to splash page for user IP: " << ip << endl;
         cout << newdec;
         cout.flush();
      }
      httplog.close();
      return 0; 
   }
   catch (exception& e){
      httplog << "Exception occurred in script: " << e.what() << endl;
      return 0;
   }
   return 0;
}

问题答案:

您不能从声明为要返回的函数中返回NULL(或0),string因为没有适当的隐式转换。您可能想返回一个空字符串

return string();

要么

return "";

如果要能够区分一个NULL值和一个空字符串,则必须使用指针(最好是智能指针),或者可以使用boost::optional



 类似资料:
  • 我在做一个程序,我需要使用一个函数,它存储一个向量中的字符串的标记。这个函数不能正常工作,所以我在一个较小的程序上尝试了这个函数。当然,我使用了字符串标记器函数。但它并不像预期的那样工作。首先,代码如下: 现在的问题。我认为问题与命令有关: 它在第一个调用中工作得很好,但在while循环中出现时会出错。如果我把它注释掉并打印ptr,那么它可以正常工作,但是程序在while循环之后终止,甚至不执行

  • 我在下面尝试捕获JSON解析错误: 为什么在处理上述异常时,打印出另一个异常,以及如何解决它?

  • 问题内容: 我已经使用了很长一段时间了(使用python绑定以及大多数情况下),每次我需要执行javascript代码时,我都使用过method。例如,用于滚动页面(python): 或者,要在另一个元素(量角器)内无限滚动: 或者,为了获取所有元素属性的字典)(python): 但是,WebDriver API也具有我个人未使用过的功能。 它涵盖了哪些用例?什么时候应该代替常规? 这个问题是se

  • 我得到了一个使用thymeleaf模板的页面,当使用内联脚本时,我在页面加载时遇到以下错误: 组织。xml。萨克斯。SAXS异常;行号:270;栏目号:85;元素的内容必须由格式良好的字符数据或标记组成。 代码在270行 我试过替换“

  • 我是selenium的初学者,需要以下脚本的帮助,我正在尝试发送vai文本字段的值。下面是代码片段。 显示错误 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。铬。驱动系统属性;有关详细信息,请参阅https://github.com/SeleniumHQ/selenium/wiki/ChromeDri

  • 当我直接在db中运行查询时,我得到了正确的输出,但在hibernate中,它给出了一个。我已经确认列名只是正确的。 请让我知道如何解决这个问题。