У меня есть класс с двумя членами данных: размер и массив из целых чисел (динамически выделенных). Целью класса является создание массива размера и заполнение его значениями. Задача состоит в том, чтобы создать конструктор, который берет строку в качестве своего параметра, но строка выглядит так: «12 | 13 | 14 | 15» и т. Д. Я искал это, но все решения являются слишком сложными, поскольку они включают векторов, и мы еще не начали с векторов. Я в основном хочу поместить эти числа в массив ints, 1 на 1, а также узнать размер массива. Как я могу это сделать? Я попытался возиться с getline и stringstream, но это дало мне массу ошибок. Мой код выглядит так.Разделить строку внутри конструктора класса
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
class IntArrays {
private:
static int objcount;
int size;
public:
int *arrayints;
const static int objcountf();
IntArrays(int);
IntArrays(const IntArrays &p){
size = p.size;
for (int i = 0;i <size;i++){
arrayints[i] = p.arrayints[i];
}
}
IntArrays(std::string f){
// ignore the other constructors, this is the constructor that is giving me trouble
int counter =0;
istringstream inStream(f);
string newstring;
while (getline(iss,newstring, '|')){
arrayints[counter] = stoi(newstring);
counter++;}
void enternums();
(note that this is only the header file, and that the current string constructor I have there does not work.
У вас есть указатель 'arrayints', но вы никогда не инициализируете его. Это, конечно, приводит к [* неопределенному поведению *] (http://en.wikipedia.org/wiki/Undefined_behavior), когда вы разыгрываете его. –