【问题标题】:vector output in C++C++ 中的向量输出
【发布时间】:2015-03-07 02:29:24
【问题描述】:

我编写了一个程序,输出记录霜冻的最大和最小天数以及相应的年份和月份。我正在从文件中读取这些数据并将我需要的内容输入到向量中。

在文件中,月份以整数 1-12 显示,我的问题是在我的程序中输出月份时,如何在文件中输出“一月”时它是 1?

【问题讨论】:

  • 使用月份名称数组? (或矢量。或地图...)

标签: c++ vector


【解决方案1】:

您可以创建 std::arraystd::string。该索引将对应于月份名称。只需确保您考虑了基于 0 的索引,例如“一月” == 0,而不是 1

std::array<std::string, 12> months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

然后

cout << "The highest number of days frost was recorded is: " 
     << maxFrost 
     << ". The date was: " 
     << months[maxMonth - 1]   // adjust to 0-based index
     << ", " 
     << maxFyear 
     << ".\n" 
     <<endl; // maximum frost with month and year

【讨论】:

  • 如果您在月份名称前加上一个虚拟值,则月份编号将与月份名称对齐。使数组包含 13 个元素。
  • @ChrisDrew 我已经能够自己修复它,也谢谢你!
【解决方案2】:

如果你的编译器不支持std::array,你可以使用固定的字符数组:

static const char * month_names[] =
{
  "Dummy", // to make names line up with month numbers.
  "January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December",
};

int main(void)
{
  for (unsigned int m = 1; m <= 12; ++m)
  {
    cout << m << ") " << month_names[i] << endl;
  }
  return EXIT_SUCCESS;
}

注意:char * 类型用于数组,因为char * 可以存储为固定数据并直接访问。使用std::string 将涉及在访问它们之前为每个月份名称创建一个std::string 实例。

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2023-03-04
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多