Я пытался прочитать список чисел и букв в 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];
Это сделало работу по отображению содержимого, но как определить различные типы данных?
Основываясь на вашем цикле for
, я буду предполагать, что когда вы сказали "цифры", вы на самом деле имели в виду "десятичные цифры".
Вы можете использовать std::vector<char>
для хранения десятичных цифр и букв, но все они будут представлены как char
. Вы можете учитывать это, используя кодировку символов вашей системы для хранения десятичных цифр. Один простой способ:
vector<char> zahlen;
for (int i = 0; i < 10; ++i)
{
zahlen.push_back('0' + i);
}
Если вместо "десятичных цифр" вы действительно имеете в виду произвольные числа, вам нужно что-то более сложное, чем char
для вашего vector
. Как было предложено в комментариях, Boost.Any
- это возможность.
Boost.Any
всесторонний, но это не так сложно собрать что-то более простое самостоятельно. Посмотрите это демо для примера.