所以我遇到了子串的这个问题并将它们转换成整数。这可能是一个简单的解决办法,但我找不到答案。
所以我收到这个字符串“12-12-2012”,我想拆分它,转换成整数并调用这样的修改方法:
string d = (data.substr(0,data.find("-")));
setDia(atoi(d.c_str()));
但是当我试图转换成整数时,它给了我标题中提到的错误。
修改
事实证明,该字符串实际上并不包含' - ',但这实在令人困惑,因为参数中的字符串来自:to_char(s.diaInicio,'dd-mm-yyyy')
更多信息:我使用了调试器并正确进行拆分,因为atoi接收的值是12(第一次拆分)。但我不知道为什么VS无法转换为整数,即使传递的字符串是“12”。
答案 0 :(得分:0)
当data
不包含-
时,此代码无法保存。
试试这个:
std::size_t p = data.find("-");
if(p == std::string::npos) {
// ERROR no - in string!
}
else {
std::string d = data.substr(0,p);
setDia(atoi(d.c_str()));
}
答案 1 :(得分:0)
请使用非常简单的程序复制问题。如果你说的是正确的,那么下面的程序也应该失败(取自Danvil的例子,而不是调用未知的(对我们来说)setDia()函数):
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
string data = "12-12-2012";
std::size_t p = data.find("-");
if(p == std::string::npos) {
// ERROR no - in string!
}
else {
std::string d = data.substr(0,p);
atoi(d.c_str());
}
}