欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

为啥函数返回的 string 对象为空

更新时间: 2014-05-14 09:35:25 责任编辑: Author_N2

 

为什么函数返回的 string 对象为空?
string getDate(){
    int t_iYear = 2013;
    int t_iMonth = 11;
    int t_iDay = 23;
    int t_iHour = 16;
    int t_iMin = 45;
     
    string t_oStrTarget;
    char* pBuf = (char*)malloc(kMaxStrLen);
    if (pBuf) {
        sprintf(pBuf, "%d-%d-%d %d:%d", t_iYear, t_iMonth, t_iDay, t_iHour, t_iMin);
        t_oStrTarget = string(pBuf);
        free(pBuf);
    }
    return t_oStrTarget;
}


string getDate(){
    int t_iYear = 2013;
    int t_iMonth = 11;
    int t_iDay = 23;
    int t_iHour = 16;
    int t_iMin = 45;
     
    string t_oStrTarget;
    char* pBuf = (char*)malloc(kMaxStrLen);
    if (pBuf) {
        sprintf(pBuf, "%d-%d-%d %d:%d", t_iYear, t_iMonth, t_iDay, t_iHour, t_iMin);
        t_oStrTarget = pBuf;
        free(pBuf);
    }
    return t_oStrTarget;
}


string getDate(){
    int t_iYear = 2013;
    int t_iMonth = 11;
    int t_iDay = 23;
    int t_iHour = 16;
    int t_iMin = 45;
     
    string t_oStrTarget;
    char* pBuf = (char*)malloc(kMaxStrLen);
    if (pBuf) {
        sprintf(pBuf, "%d-%d-%d %d:%d", t_iYear, t_iMonth, t_iDay, t_iHour, t_iMin);
        t_oStrTarget.append(string(pBuf));
        free(pBuf);
    }
    return t_oStrTarget;
}


为什么返回的 string 对象都是空的? c++ 分享到:
--参考方法--
没发现什么问题?楼主可以单步么?单步看看,什么时候置空的?
--参考方法--
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

没发现什么问题?楼主可以单步么?单步看看,什么时候置空的?

 [Info_] [OptionLayer.cpp::addTextFields:77] addTextFields
1970-1-1 8:30 [Info_] [OptionLayer.cpp::persistServerIpAndPort:135] text_field_server_ip = 192.168.1.123
 [Info_] [OptionLayer.cpp::persistServerIpAndPort:140] text_field_server_port = 8888
 [Info_] [DataModel.cpp::parseJson:76] 加载已存在的数据模型文件~
 [Info_] [DataModel.cpp::parseJson:92] 文件的长度为:8087
 [Info_] [FakeEntryLayer.cpp::setUpDataModel:44] DataModel::sharedInstance
 [Info_] [HZNetMgr.cpp::getIpAndPort:136] 使用 UserDefault 中存储的 ip 以及 port
 [Info_] [HZNetMgr.cpp::getIpAndPort:140] ip = "192.168.1.123", port = 8888
单步跟了一下,发现有时候行,有时候不行

不行的时候,是偶然还是必然的阿?是在那里给置空的呢?

我上面三种写法那种比较好呢?

建议用第一个吧!其实适合实际代码才是最好的!

能解释一下么?

第一个直观,简单明了!第二个类型不匹配,可能因编译环境不同,有影响!第三个追加可能有为清空的脏数据!所以建议使用第一种,
--参考方法--
Horrible code, mix C/c++ together is the worst thing to do.
Just use stringstram


string getDate(){
    int t_iYear = 2013;
    int t_iMonth = 11;
    int t_iDay = 23;
    int t_iHour = 16;
    int t_iMin = 45;

   std::stringstream ss;      
   ss << t_iYear << "-" << t_iMonth << "-" << t_iDay<< " " << t_iHour <<":" t_iMin
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-14 09:35:25
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/244121/
本文WWW.DOC100.NET DOC100.NET版权所有。