Потребовалось написать пару простеньких скриптов на c++. До этого когда-то писал в Visual Studio, сейчас сижу на linux(fedora 29), поэтому перешёл на gcc. Написал скрипт, который должен открывать файл с записанными измерениями сигнала (длина не известна заранее), считывать их в массив, а затем производить мат. обработку:
# include <iostream>
# include <fstream>
# include <string>
# include <vector>
# include <cstdlib>
int main() {
const float m = 0.0008;
float h = 1/200000000;
int rpt = 1;
int count = 0;
int i, j, k;
float c;
std::string filename, outname;
std::vector<double> signal;
setlocale(LC_ALL, "rus");
//Открытие файла
std::cout << "Введите имя файла" << std::endl;
std::cin >> filename;
std::ifstream infile(filename);
if (!infile.is_open())
std::cout << "File not found!" << std::endl;
else {
std::string buffer = "";
while (!infile.eof()) {
while (std::getline(infile, buffer, ",")) {
double value = atof(buffer.c_str());
signal.push_back(value);
count++;
}
// Далее идёт математическая обработка информации
float b[count];
float x[count];
float t[count];
float res[count];
for (i = 0; i = count; i++) {
b[i] = 0.0;
x[i] = 0.0;
}
for (i = 0; i = rpt; i++) {
for (j = 0; j = count; j++) {
float y = 0.0;
for (i = count; i = 0; i--)
x[i] = x[i-1];
x[1] = signal[j];
for (k = 0; k = count; k++)
y += x[k]*b[k];
if (y>1.0)
y = 1.0;
else if (y<-1.0)
y = -1.0;
res[j] = signal.at(j) - y;
if (res[j]>1.0)
res[j] = 1.0;
else if (res[j]<-1.0)
res[j] = -1.0;
std::cout << "Введи имя файла для записи" << std::endl;
std::cin >> outname;
std::ofstream outfile;
outfile.open(outname);
if (outfile.is_open())
outfile << res << std::endl;
outfile.close();
if (j==0)
t[j] = 0;
else
t[j] = t[j-1] +h;
c = 2*m*res[j];
for (k = 0; k = count; k++)
b[k] += x[k]*c;
}
}
}
}
infile.close();
return 0;
}
Запустил компиляцию в терминале, однако вывело исключение:
Test.cpp:31:52: ошибка: нет соответствующей функции для вызова «getline(std::ifstream&, std::__cxx11::string&, const char [2])» while (std::getline(infile, buffer, ","))
Прочёл в интернетах, что у людей возникает такая проблема при считывании из потока с помощью getline без использования string. Однако я string использую, а другого решения данной проблемы не нашёл. Подскажите пожалуйста решение.
Возможно, что вы используете строку разделитель, а нужен символ. То бишь ","
заменяется на ','
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я использую библиотеку arborjs для построения графов (Я не смог найти установку через npm), как я могу использовать эту библиотеку у себя в проекте?
Я делаю рандом 3 статей из базы данных и добавить их в шаблон и данные из этого шаблона передать в другой шаблон с помощью include (короче: есть...