Я пытаюсь преобразовать строку в double. Код очень прост.Ошибка C++ преобразования строки в double
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 extra [i + 1], я получаю 3. Если я оставлю лишний как строку, программа попытается сначала делить (2) на 51 (ascii на 3). Что, черт возьми, происходит?
Моя догадка: дополнительная строка, 'дополнительный [я + 1]' это char, а char не имеет метода 'c_str'. Если вы хотите преобразовать часть строки, вы можете сделать что-то вроде' atof (extra.c_str() [i + 1]) ' – UncleBens
Это код не является полным - вам не хватает определения «extra». –
Просто попробовал это. Ошибка: неверное преобразование из const char в const char * ошибка: инициализирующий аргумент 1 из double atof (const char *) – piratebill