文件读写--格式转化

#include <fstream>
#include <iostream>

using namespace std;

string txtToSql(string infile, string outfile) {
    cout << infile;
    ifstream in(infile);
    ofstream out(outfile);
    string lineIn, lineOut, sqlresult;
//0:数字 1:字符串
    if (in) // 有该文件
    {
        int flag = 0, FL[100], length = 0;
        while (getline(in, lineIn)) // line中不包括每行的换行符
        {
            cout << "line read" << endl;
            if (flag == 0) {
                for (int j = 0; j < lineIn.length(); j++) {
                    FL[j] = lineIn[j] - '0';
                    length++;
                }
                lineOut = "";
                flag++;
                continue;
            }
            flag++;
            lineOut = swtichToSql(lineIn, FL, length);
            if (flag > 2) { lineOut = "," + lineOut; }
            sqlresult = sqlresult + lineOut;
            cout << lineIn << endl;
            cout << lineOut << endl;
            out << lineOut << endl; // 输入到2.txt中
        }
    } else // 没有该文件
    {
        cout << "no such file" << endl;
    }
    cout << sqlresult << endl;
    return sqlresult;
}
//对每一行的文本进行处理:字符串加引号,各单元之间加逗号,整行用括号包起来
string swtichToSql(string str, int a[], int len) {
    string res = "(";
    const char *p = str.c_str();
    for (int i = 0; i < len; i++) {
        char achar[100] = {''};
        char *q = achar;
        if (a[i] == 1) {
            *q = '"';
            q++;
        }
        while (*p != '' && *p != '	') {
            *q = *p;
            q++;
            p++;
        }
        if (a[i] == 1) {
            *q++ = '"';
        }
        if (i < len - 1) {
            *q = ',';
            q++;
        }
        *q = '';
        string temp = achar;
        res = res.append(temp);
        while (*p == '	') {
            p++;
        }

    }
    res = res.append(")");
    return res;
}



int main() {
    string infile = "/Users/fangwendong/work/test.txt", outfile = "/Users/fangwendong/work/result.sql", sqlresult = "";
    //txt ===> sql
    sqlresult = txtToSql(infile, outfile);
    return 0;

}

测试文本test.txt

0010011
109    2704608    4bf12945    83    83        FAILED    2017-08-08
109    2718426    5e9598ee    83    83        FAILED    2017-08-08
109    2726917    8a8ab27f    83    83        FAILED    2017-08-08
109    2040471    47a332c7    83    83            FAILED    2017-08-15
109    2263489    a36309f5    83    83        FAILED    2017-08-15
109    2409650    e210bff6    83    83        FAILED    2017-08-11
109    2409711    34cbff54    83    83        FAILED    2017-08-11
109    2636838    f57a56e6    83    83        FAILED    2017-08-11
109    2725817    aff10c26    83    83        FAILED    2017-08-15
109    2729543    dc4bece7    83       83        FAILED    2017-08-15
109    2753012    fb1f0ef0    83    83        FAILED    2017-08-15
109    2353175    e161bf8e    83    83        FAILED    2017-08-20
109    2363029    4d41ebc8    83    83        FAILED    2017-08-20
109    2363047    82712ba3    83    83        FAILED    2017-08-20
109    2386423    09ef5056    83    83        FAILED    2017-08-20
109    2388536    c2238139    83    83        FAILED    2017-08-20
109    2405661    1d01dcb2    83    83        FAILED    2017-08-20
109    2406788    6dc6838d    83    83        FAILED    2017-08-20
109    2409285    05c1c6b1    83    83        FAILED    2017-08-20
109    2409356    9800a7df    83    83        FAILED    2017-08-20
109    2412893    16c7b6b7    83    83        FAILED    2017-08-20
109    2412970    05bf815e    83    83        FAILED    2017-08-20
109    2421705    66150707    83    83        FAILED    2017-08-20
109    2457426    1fe8b55e    83    83        FAILED    2017-08-20
109    2482453    0f19b58d    83    83        FAILED    2017-08-20

实验结果result.sql

(109,2704608,"4bf12945",83,83,"FAILED","2017-08-08")
,(109,2718426,"5e9598ee",83,83,"FAILED","2017-08-08")
,(109,2726917,"8a8ab27f",83,83,"FAILED","2017-08-08")
,(109,2040471,"47a332c7",83,83,"FAILED","2017-08-15")
,(109,2263489,"a36309f5",83,83,"FAILED","2017-08-15")
,(109,2409650,"e210bff6",83,83,"FAILED","2017-08-11")
,(109,2409711,"34cbff54",83,83,"FAILED","2017-08-11")
,(109,2636838,"f57a56e6",83,83,"FAILED","2017-08-11")
,(109,2725817,"aff10c26",83,83,"FAILED","2017-08-15")
,(109,2729543,"dc4bece7",83,83,"FAILED","2017-08-15")
,(109,2753012,"fb1f0ef0",83,83,"FAILED","2017-08-15")
,(109,2353175,"e161bf8e",83,83,"FAILED","2017-08-20")
,(109,2363029,"4d41ebc8",83,83,"FAILED","2017-08-20")
,(109,2363047,"82712ba3",83,83,"FAILED","2017-08-20")
,(109,2386423,"09ef5056",83,83,"FAILED","2017-08-20")
,(109,2388536,"c2238139",83,83,"FAILED","2017-08-20")
,(109,2405661,"1d01dcb2",83,83,"FAILED","2017-08-20")
,(109,2406788,"6dc6838d",83,83,"FAILED","2017-08-20")
,(109,2409285,"05c1c6b1",83,83,"FAILED","2017-08-20")
,(109,2409356,"9800a7df",83,83,"FAILED","2017-08-20")
,(109,2412893,"16c7b6b7",83,83,"FAILED","2017-08-20")
,(109,2412970,"05bf815e",83,83,"FAILED","2017-08-20")
,(109,2421705,"66150707",83,83,"FAILED","2017-08-20")
,(109,2457426,"1fe8b55e",83,83,"FAILED","2017-08-20")
,(109,2482453,"0f19b58d",83,83,"FAILED","2017-08-20")
原文地址:https://www.cnblogs.com/fwdqxl/p/7441027.html