std :: vector混合数据类型

时间:2013-10-11 21:58:13

标签: c++ c++11 vector

我试图将数字和字母列表读入std::vector<char>。由于它产生了错误,我只想读数:

#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
    vector<char> zahlen;
    for (int i = 0; i < 10; ++i)
    {
        zahlen.push_back(i);
    }
    for (int i = 0; i < zahlen.size(); ++i)
    {
        cout<<zahlen[i];
    }
    cout<<endl;
    return 0;
}

这会产生一些奇怪的输出。我究竟做错了什么?如何在矢量或其他容器中存储多种类型的数据?

编辑:

cout<<(int)zahlen[i];

这完成了显示内容的工作,但如何识别不同类型的数据呢?

1 个答案:

答案 0 :(得分:2)

根据你的for循环,我会假设当你说“数字”时,你实际上是指“十进制数字”。

您可以使用std::vector<char>存储十进制数字和字母,但它们都将表示为char。您可以使用系统的字符编码来存储小数位数。一个简单的方法:

    vector<char> zahlen;
    for (int i = 0; i < 10; ++i)
    {
        zahlen.push_back('0' + i);
    }

如果不是“十进制数字”而是真正意味着任意数字,那么对于char,您需要比vector更复杂的内容。正如评论中所建议的,Boost.Any是可能的。