我想將字符串轉換爲雙精度值。代碼非常簡單。將字符串轉換爲雙精度的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