是老师给了我们一个使用C ++的作业,由于我不是在寻求解决方案来完成整个程序,所以我只会根据遇到的困难询问信息。

香港专业教育学院使我的程序允许用户选择他们想要打开的文件。将要打开的文件将包含stateInitials,miles和numberOfShelters。每个后面都有一个空格。

看起来像这样

wv 4.0 3
nc 32.7 4
sc 43.2 10

我需要先读取stateInitials并将其放在自己的数组中,然后将英里数放在自己的数组中,并将numberOfShelters放在自己的数组中。有16行相同的重复模式,因此stateInitials数组应容纳16行,其他两个数组应保持相同。我不能使用矢量。我不能使用STRING。只能使用C样式字符串。我不知道如何创建一个包含16个c样式字符串的数组。我已经用Google搜索了大约8个小时,唯一的解决方案超出了老师期望我们知道的知识范围。我们确实涵盖了二维数组,我尝试使用它们,但结果很糟糕。我只需要一个解决方案来创建一个包含c字符串的数组,并尽可能多地解释,以便我可以理解您的方法,谢谢。

最佳答案

// have an array for each of the fields
// stateInitials is two-dimensional as it stores many characters for each state
const char stateInitials[Num_States][Max_State_Size];
int miles[Max_States];
int numberOfShelters[Max_States];

// work through the input a state at a time...
for (int i = 0; i < Num_States; ++i)
    // if you can't get a space-delimited state name, miles and numberOfShelters, fail
    if (!(stream.getline(stateInitials[i], Max_State_Size, ' ') &&
          stream >> miles >> numberOfShelters)
    {
        std::cerr << "bad input for state # " << i + 1 << '\n';
        exit(EXIT_FAILURE);
    }


如果允许您使用向量和字符串,这会更清洁。您需要事先创建一个ifstream(我假设它被称为“ stream”),并创建用于最大数组边界的常量。

07-24 09:45
查看更多