2013-11-26 3 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; 
    } 

Когда я компилирую, я получаю ошибку «не удается преобразовать зЬй :: строку в целое в задании.»

Может кто-нибудь помочь, пожалуйста?

ответ

1

Не должно быть int * categorynames = new int[categories]; be std::string *categorynames = new std::string[categories];? , и я думаю, что вы можете удалить text и использовать getline(cin, categorynames[i]);

2

первую очередь вы должны изменить тип categorynames в string *, и я заметил, что getline дает пробел в качестве первого значения (когда я = 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; 
     } 
Смежные вопросы