Не могу разобраться с возвратом массива из функции. Код:
loadData.cpp
#include "SaveText.h"
#include <fstream>
#include <iostream>
char* SaveText::loadData(char point[]) {
std::ifstream load;
load.open(point ios::out | ios::app);
if(!load) {
std::cout<<"ERROR!"<<std::endl;
}
char* out_file = new char[200];
while(1) {
load.getline(out_file, sizeof(out_file));
if(load.eof()) break;
}
return out_file;//не могу вернуть массив
}
main.cpp
#include "SaveText.h"
int main() {
char *text_in_file[200];
SaveText data;
text_in_file = data.loadData("C://Users//...");
data.saveData(text_in_file, "C://Users//...");
return 0;
}
По замыслу эта функция будет открывать файл и считывать от туда данные, после эти данные функция вернёт, а потом я буду решать что с ними делать.
Но при компиляции мне выдаёт ошибку:
main.cpp:8:16: error: incompatible types in assignment of 'char*' to 'char* [200]'
text_in_file = data.loadData("C://Users//SilentiumNoxe//Documents//Projects//noteCoin//data//savedata.txt");
^
main.cpp:9:107: error: no matching function for call to 'SaveText::saveData(char* [200], const char [75])'
data.saveData(text_in_file, "C://Users//SilentiumNoxe//Documents//Projects//noteCoin//data//outfile.txt");
^
Как правильно вернуть в данной ситуации массив и что значит "Нет подходящей функции для вызова"?
P.S. string, vector и пр. не предлагать. Спасибо.
Вот это -
char *text_in_file[200];
массив из 200 указателей на char
, причем сама переменная text_in_file
не может получить никакое иное значение, кроме определенного выше.
Вы же пытаетесь присвоить ей другой указатель, но не просто другой, а указатель на массив char
.
В лучшем случае можно сделать
text_in_file[0] = data.loadData(...);
но это явно не то, что вы хотите...
Можно объявить так:
char *text_in_file;
и тогда ваше присваивание будет логично и понятно :)
Только не забудьте потом вызвать
delete[] text_in_file;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникли проблемы в управлении спрайтомКоды клавиш управления храню в (int keyLeft, keyRight), они могут изменяться
есть вот такой буфер hex-значений - fe ff 03 99 00 01
Нужно получить аудио-стрим микрофона (не звука во вкладке, а именно микрофона) через расширение ChromeОбычный navigator