2017-10-12 27 views
0

我目前正在創建一個給我一個錯誤的天氣應用程序。它說!=有問題,但我不確定有什麼不對,所以任何人都可以幫忙。它給我的錯誤操作數類型不兼容(「std :: string *」和「const char *」)(有4)和'!=':沒有從'const char *'轉換爲'std :: string *」
謝謝 C++代碼:我在我的C++程序中收到錯誤

#include "stdafx.h" 
#include <iostream> 
#include <string> 
using namespace std; 

void moveTemperaturesToRight(double temperatures[], double windSpeed[], string windDirection[]) 
{ 
    for (int i = 3; i > 0; i--) 
    { 
     temperatures[i] = temperatures[i - 1]; 
     windSpeed[i] = windSpeed[i - 1]; 
     windDirection[i] = windDirection[i - 1]; 
    } 
} 
int main() 
{ 
    string name; 
    int choice; 
    int numOfReadings = 0; 
    double temperatures[4], windSpeeds[4]; 
    string windDirections[4]; 
    bool initialized = false; 
    string str; 
    //Have the user provide a name for the weather station upon entry. 
    cout << "Enter the name of weather station: "; 
    getline(cin, name); 
    //Control loop to perform various actions. 
    while (true) 
    { 
     cout << "1. Input a complete weather reading." << endl; 
     cout << "2. Print the current weather." << endl; 
     cout << "3. Print the weather history (from most recent to oldest)." << endl; 
     cout << "4. Exit the program." << endl; 
     cout << "Enter your choice: "; 
     cin >> str; 
     if (str.length() != 1 || str < "1" || str > "4") 
     choice = 0; 
     else 
      choice = atoi(str.c_str()); 

     //Switch based on choice. 
     switch (choice) 
     { 
     case 1: moveTemperaturesToRight(temperatures, windSpeeds, windDirections); 

      do { 

       cout << "Enter the temperature (a value >=0):"; 

       cin >> temperatures[0]; 

      } while (temperatures < 0); 

     //get correct wind speed 
     do 
     { 
      cout << "Enter the wind speed (a value >=0):"; 
      cin >> windSpeeds[0]; 
     } while (windSpeeds < 0); 

     //get correct wind direction 
     do 
     { 
      cout << "Enter the wind direction (North,South,East or West):"; 
      cin >> windDirections[0]; 
     } while (windDirections != "North" && windDirections != "South" && windDirections != "East" && windDirections != "West"); 
     initialized = true; 
     if(initialized) 
      numOfReadings++; 
      if (numOfReadings > 4) 
       numOfReadings = 4; 
      break; 
     case 3: //Print the current weather, if valid weather is entered. 
      for (int i = 0; i < numOfReadings; i++) 
      { 
       cout << "*****" << name << "*****" << endl; 
       cout << "Temperature: " << temperatures[i] << endl; 
       cout << "Wind speed: " << windSpeeds[i] << endl; 
       cout << "Wind direction: " << windDirections[i] << endl << endl; 
      } 
      if (numOfReadings == 0) 
       cout << "Please enter the details before asking to print." << endl; 
      break; 
     case 2: if (numOfReadings == 0) 
     { 
      cout << "Please enter the details before asking to print." << endl; 
      break; 
     } 
        cout << "*****" << name << "*****" << endl; 
        cout << "Temperature: " << temperatures[0] << endl; 
        cout << "Wind speed: " << windSpeeds[0] << endl; 
        cout << "Wind direction: " << windDirections[0] << endl << endl; 
        break; 
     case 4: return 0; //Stops execution. 
     default: cout << "Invalid choice. Please follow the menu." << endl; 
     } 
    } 
} 
+2

您應該將此問題的標題更改爲更好的描述。您面臨的問題是由於您正在將C++指針與C字符串進行比較。 – auserdude

+0

'if(windDirections [0]!=「West」)'因爲'windDirections'是一串字符串。 – Raindrop7

+0

編譯器說「有事」? – 2017-10-12 22:01:34

回答

4

你需要一個元素windDirections使用該文本比較。

您的意思是windDirections[0] != "North" & c。?

當前您正在嘗試比較std::string的數組,因此編譯器會發出診斷信息。它盡力在衰減數組指向std::string(因此具體的錯誤),但然後放棄。

+0

T^hank你。這是問題,但現在當我運行該程序時,例如,如果我爲風速輸入-1,它會在不應該時接受該答案。不知道爲什麼 – Matt

+0

@Matt不同的問題,不同的問題。建議潛水和調試一段時間。 – user4581301

相關問題