将字符串分配给数组的元素?

时间:2013-11-26 03:47:39

标签: c++ string

我想编写一个程序,根据加权平均值计算一个班级的最终成绩,我正处于提示用户输入每个类别名称的阶段(例如'家庭作业','测验',等等)。我设置它来询问用户他们有多少类别,然后分别询问每个类别,然后将每个类别名称作为字符串保存到数组元素中。我知道它可能更容易使用矢量类,但如果可能的话,我想这样做。

#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。”

有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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;
        }  

答案 1 :(得分:1)

不应该   int * categorynames = new int[categories];std::string *categorynames = new std::string[categories];? 我认为您可以删除text并使用getline(cin, categorynames[i]);