Я пытаюсь преобразовать строку в двойную. Код очень простой.
double first, second;
first=atof(str_quan.c_str());
second=atof(extra[i+1].c_str());
cout<<first<<" "<<second<<endl;
quantity=first/second;
при попытке преобразовать extra компилятор бросает мне эту жемчужину мудрости:
ошибка: запрос члена c_str в extra.std::basic_string‹_CharT, _Traits, _Alloc>::operator[] [с _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator](((unsigned int )(i + 1))), который имеет неклассовый тип char
Я понятия не имею, что это значит. если я вычисляю extra[i+1], я получаю 3. Если я оставляю extra в виде строки, программа пытается сначала разделить (2) на 51 (ascii для 3). Что, черт возьми, происходит?
extra[i + 1]
— это char, а у char нет методаc_str
. Если вы хотите преобразовать часть строки, вы, вероятно, можете сделать что-то вродеatof(extra.c_str()[i + 1])
- person UncleBens   schedule 08.11.2009atof(extra.c_str() + i + 1)
, иначе вам нужно будет взять адрес, если вы хотите проиндексировать массив символов:atof(&extra.c_str()[i + 1])
- person UncleBens   schedule 08.11.2009