我想将字符串转换为双精度值。代码非常简单。将字符串转换为双精度的C++错误
double first, second;
first=atof(str_quan.c_str());
second=atof(extra[i+1].c_str());
cout<<first<<" "<<second<<endl;
quantity=first/second;
试图转换额外时,编译器会引发智慧这个宝石我:
error: request for member c_str in extra.std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator](((unsigned int)(i + 1))), which is of non-class type char
我不知道这意味着什么。如果我cout额外的[i + 1],我得到3.如果我留下额外的字符串,程序试图首先(2)51(ascii为3)。到底他妈发生了什么?
我的猜测是:额外的是一个字符串,'额外的[I + 1]'如果你想转换字符串的一部分,你可以做'atof(extra.c_str()[i + 1])' – UncleBens 2009-11-07 23:29:45
这是一个字符,并且字符没有'c_str'方法。代码不完整 - 你错过了“extra”的定义。 – 2009-11-07 23:31:48
刚试过。 错误:从const char到const char的无效转换* 错误:初始化double atof的参数1(const char *) – piratebill 2009-11-07 23:32:11