将一组字符串分配给向量c ++的内容

时间:2015-03-04 17:16:11

标签: c++ vector

我有一个名为months的向量,其中包含一遍又一遍的数字1-12。这些数字是从文件中读取的。我怎样才能使它在这个特定的向量中数字1 =" 1月",2 =" 2月",3 =" 3月"等,以便在使用cout<<月[3]<< ENDL;它将输出" March"例如,而不是整数?

3 个答案:

答案 0 :(得分:1)

使用常量月份名称并在必要时访问它们对我来说更有意义。存储在months中的索引范围为1到12,因此我们需要从索引中减去1才能访问正确的月份:

std::string month_names[] = {
    "January",
    "February",
    // ...
};

// ... Get the month indices from a file ...

std::cout << month_names[months[3] - 1] << std::endl;

答案 1 :(得分:1)

您可以使用std::map将数字与字符串相关联。

#include <map>
#include <string>
#include <iostream>

using namespace std;

int main()
{
   std::map<int, std::string> Month = {{1,"January"}, {2,"February"}, {3,"March"} /* etc */ };
   cout << Month[3] << endl;
}

输出:

March

实例:http://ideone.com/oMgN4z

答案 2 :(得分:0)

定义具有月份名称的字符串文字数组就足够了,并使用向量的元素作为此数组的索引。例如

const char *month_name[] = 
{ 
    "January", "February", "March", /*...*/ "December" 
};

std::cout << month_name[ months[i] - 1] << std::endl;

或者

const char *month_name[] = 
{ 
    "", "January", "February", "March", /*...*/ "December" 
};

std::cout << month_name[ months[i] ] << std::endl;

其中months [i]是索引为i的向量的元素。