Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将二进制CSV文件转换为TXT文件时出错_C++_Binary_Fstream_Ifstream_Ofstream - Fatal编程技术网

C++ 将二进制CSV文件转换为TXT文件时出错

C++ 将二进制CSV文件转换为TXT文件时出错,c++,binary,fstream,ifstream,ofstream,C++,Binary,Fstream,Ifstream,Ofstream,我的问题是我遇到了以下错误: (在抛出'std::invalid_argument'的实例后调用terminate) what():stoi) 我必须输入一个二进制CSV文件,运行语法并将输出保存在TXT文件中。任何帮助都将不胜感激 string linea; vector <string> numeros; ifstream entrada("ECG_pueba_1.csv", ios::binary); ofstream signal( "datos_de_senial.tx

我的问题是我遇到了以下错误:

(在抛出'std::invalid_argument'的实例后调用terminate) what():stoi)

我必须输入一个二进制CSV文件,运行语法并将输出保存在TXT文件中。任何帮助都将不胜感激

string linea;
vector <string> numeros;


ifstream entrada("ECG_pueba_1.csv", ios::binary);
ofstream signal( "datos_de_senial.txt" );

int pos =0;

while(getline(entrada, linea)){
    istringstream in(linea);
    string num;
    if(pos==0){
        while (getline(in, num, ',')){
            numeros.push_back(num);
        }

    }

    regex re(",");
    string csv = linea;
    vector<string> data(sregex_token_iterator(csv.begin(),csv.end(),re,-1), {});

    // itero a traves de "data"
    for (vector<string>::iterator iter = data.begin(); iter != data.end(); ++iter) {

        // leo el valor
        int value = stoi(*iter);
        // paso al siguiente valor
        ++iter; 
        int repeatCount = stoi(*iter);

        // muestro por consola
        for (int i=0; i < repeatCount; ++i)
            signal << value << "\n";
    }

}

signal.close();
stringlinea;
向量数;
ifstream entrada(“ECG_pueba_1.csv”,ios::binary);
流信号(“datos_de_senial.txt”);
int pos=0;
while(getline(entrada,linea)){
istringstream in(linea);
字符串数;
如果(位置==0){
while(getline(in,num,,')){
数字。推回(数字);
}
}
正则表达式re(“,”);
字符串csv=linea;
向量数据(sregx_令牌_迭代器(csv.begin(),csv.end(),re,-1),{});
//itero a traves de“数据”
对于(向量::迭代器iter=data.begin();iter!=data.end();++iter){
//利奥·埃尔·瓦洛
int值=stoi(*iter);
//西吉恩特山谷酒店
++iter;
int repeatCount=stoi(*iter);
//穆埃斯特罗港康索拉酒店
对于(int i=0;i信号如果没有指向“二进制csv”的链接或前512字节左右的十六进制转储,就不可能知道您需要什么。实际上没有“二进制csv”这样的东西。在二进制文件中,存储是按类型大小的,不需要逗号等分隔符。也没有“行”的概念在二进制文件中。没有二进制CSV文件。CSV文件是文本格式,值用逗号分隔(因此是逗号分隔的值扩展名)。它不比任何其他纯文本文件更具二进制性-事实上,它已经是一个文本文件,因此不需要进行任何转换。您的异常表示您尝试stoi一些非int的字符串。因此,您应该在某个位置捕获该异常,而不是让它使程序崩溃或提供stoi错误文本。仅针对您的错误消息:终止调用after抛出'std::invalid_argument'实例what():stoi这意味着您给出了std::stoi()错误的输入,因此它抛出了一个std::invalid_argument(shorturl.at/yHIN2)异常,而您没有捕捉到。std::stoi,std::stol,std::stoll(shorturl.at/diOU3)例外情况:std::如果无法执行转换,则无效的_参数,因此您需要仔细检查您尝试转换的输入字符串值。在二进制文件中,读取的每个项都是一个字节或八位字节。如何分辨数字44(0x2C)之间的差异它是否是逗号?同样,如果0x2C出现在多字节整数中会发生什么?
ifstream leer_ECG8("ECG_pueba_1.csv", ios::binary);
        leer_ECG8.read((char*)(&leer_linea_final), sizeof(linea_final));

        for( unsigned int i =0;i<leer_linea_final.size();i++)
            cout<<leer_linea_final[i];

        leer_ECG1.close();