2016-10-04 46 views
-1

我寫一個程序,讀取和寫入.txt文件和C++一個字符的值。這裏是我的代碼部分編輯的樣本:您在C++中的字符串

#include <iostream> 
#include <stdio.h> 
#include <fstream> 
#include <string> 
#include <windows.h> 
#include <sstream> 
#include <algorithm> 

//functions 
template <typename T> 
string num_to_string(T pNumber) 
{ 
    ostringstream oOStrStream; 
    oOStrStream << pNumber; 
    return oOStrStream.str(); 
} 
bool isdot(const char &c) 
{ 
    return '.'==c; 
} 
//needed for string_to_num() 

float string_to_num(string s) 
{ 
    s.erase(remove_if(s.begin(), s.end(), &isdot),s.end()); 
    replace(s.begin(), s.end(), ',', '.'); 
    stringstream ss(s); 
    float v = 0; 
    ss >> v; 
    return v; 
} 

//code 

string line = 10/20; 
//the line taken from the .txt file 
float add_numerator = 5; 
float add_denominator = 10; 
//these are values just for example 

for(int i = 0; i < line.size(); i+= 1) { 
    if (numerator_finished == false){ 
      if (line[i] != "/"){ 
       numerator += line[i]; 
      }else { 
       numerator_finished = true; 
      } 
    }else { 
      denominator += line[i]; 
    } 
} 
float numerator_temp = string_to_num(numerator); 
float denominator_temp = string_to_num(denominator); 
numerator_temp += add_numerator; 
denominator_temp += add_denomitator; 

numerator = num_to_string(numerator_temp); 
denominator = num_to_string(denominator_temp); 

string add_string = numerator + "/" + denominator; 
//add_string is what the line in the .txt file is changed to with not shown code 

如果此代碼運行時,它應該是add_string =「15/30」。然而,它不會因爲該行的編譯:

if (line[i] != "/"){ 

因爲該行出現此錯誤:
「ISO C++禁止指針和整數之間的比較[-fpermissive]」

我不明白怎麼當它們都是字符串時,這是一個指針和一個整數。

可以這樣錯誤地解釋並出示解決?

+1

只需使用字符文字:'如果(行[I] = '/'!){'' –

+0

「/」'是一個字符串,你正在努力尋找一個字符。你需要''/''。 – NathanOliver

+0

傢伙。停止回答評論!!!! –

回答

0

我不明白這是一個指針和一個整數,當他們都是字符串。

他們是不是兩個字符串! line是一個字符串,但line[i]char

而且"/"是一個字符陣列(字符串文字)。

改爲使用'/'來獲得一個字符字面量,它將很好地與char進行比較。