2013-11-26 176 views
0

我想編寫一個程序,根據加權平均數計算班級的最終成績,並且我正在提示用戶輸入每個類別的名稱(例如「家庭作業」,「測驗」等) )。我已經設置了詢問用戶他們有多少類別,然後單獨詢問他們每一個,然後將每個類別名稱作爲字符串保存到數組元素中。我知道它可能更容易使用矢量類,但我希望儘可能以這種方式來完成。將一個字符串賦值給一個數組的元素?

#include <cmath> 
#include <iostream> 
#include <iomanip> 
#include <stdlib.h> 
#include <string> 
using namespace std; 

int main() 
{ 
    cout << "How many grade categories are there for this class? "; 
    cin >> categories; 


    int * categorynames = new int[categories]; 

    for (int i(0); i < categories; i++) 
    { 
    string text; 
    cout << "Name of category: "; 
    getline(cin, text); 
    categorynames[i] = text; 
    } 

當我編譯時,我得到一個錯誤「不能將std :: string轉換爲int在賦值。」

任何人都可以幫忙嗎?

回答

1

不應該 int * categorynames = new int[categories];std::string *categorynames = new std::string[categories];? ,我想你可以刪除text,並使用getline(cin, categorynames[i]);

2

首先你應該改變的categorynames類型爲string *,我也注意到,getline是給一個空格作爲第一個值(i = 0時),然後將得到正確的輸入其餘的,所以改爲cin>>categorynames[i],像這樣:

 string * categorynames = new string[categories]; 

     for (int i = 0; i < categories; i++) 
     { 
      //string text; 
      cout << "Name of category: \n"; 
      cin>>categorynames[i]; 
      //getline(cin, text); 
      //categorynames[i] = text; 
     } 
相關問題