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