Я работаю над HEVC, то есть X265, и здесь я пытаюсь ввести массив QP со значениями, которые я читаю из файла. Я знаю, что значения массива qp будут от 0 до 100.
Я создал тестовый файл и ввел комбинацию из 1 и 0 до 99. Файлы выглядят так:
10101010110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000
код, который я написал для этой цели, выглядит следующим образом:
ifstream myfile;
myfile.open("/Users/Ahmedrik/Mine/Uni-Stuff/Test-FYP/roi.txt");
char input[100];
int qp_input[100];while (!myfile.eof()) {
myfile >> input;
cout<< input<<endl;
}myfile.close();for(int i=0;i<100;i++){
qp_input[i]=(int)input[i];
if(qp_input[i]==48){
qp_input[i]=1;
}
else
qp_input[i]=0;
cout<<i<<" : "<<qp_input[i]<<endl;
}
Но я не могу иметь правильные значения. Qp_input остается равным 0. Что я делаю не так?
Проверьте это решение
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <sstream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[]) {
ifstream myfile;
myfile.open("text.txt");
int qp_input[100];
//will read whole contents to a string instead of while(!myfile.eof())
std::string input( (std::istreambuf_iterator<char>(myfile) ),
(std::istreambuf_iterator<char>() ) );
for(int i=0;i<input.size();i++){
stringstream ss;
ss<<input[i];
ss>>qp_input[i];
cout<<i<<" : "<<qp_input[i]<<endl;
}
}
Введите в массив, и вы пытаетесь прочитать в указатель «>> вход», а не в индексы массива в этом массиве, например, msgstr «ввод [индекс]». Вы должны иметь счетчик в вашем цикле и читать в массив.
int index = 0;
while (!myfile.eof()) {
myfile >> input[index];
cout<< input[index] <<endl;
index++;
}
myfile.close();
Кроме того, какой тип данных в файле. В моненте вы будете читать в символах, так что предполагается, что они являются байтами. Если у вас есть результаты в десятичном формате обычного текста, вы можете изменить тип ввода на int или double.