首页 > 代码库 > window下遍历文件并修改

window下遍历文件并修改

今天需要写一个遍历文件夹下的所有文件,试了试以前的方法竟然报错了。重新改了一下。

#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <fstream> 
#include <iterator> 
#include <string> 
#include <time.h>
#include <math.h>
using namespace std;

wchar_t* CharToWchar(const char* c)
{
    wchar_t *m_wchar;
    int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);
    m_wchar = new wchar_t[len + 1];
    //映射一个字符串到一个宽字符(unicode)的字符串
    MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);
    m_wchar[len] = \0;
    return m_wchar;
}
char* WcharToChar(const wchar_t* wp)
{
    char *m_char;
    //映射一个unicode字符串到一个多字节字符串
    int len = WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), NULL, 0, NULL, NULL);
    m_char = new char[len + 1];
    WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), m_char, len, NULL, NULL);
    m_char[len] = \0;
    //printf("my char %s\n", m_char);
    return m_char;
}

wchar_t* StringToWchar(const string& s)
{
    const char* p = s.c_str();
    return CharToWchar(p);
}

void operate(string name)
{

    ifstream file(name);
    string tempStr;
    int i = 0;
    
    while (file) {
        string line;
        getline(file, line);
        cout << line << endl;
        if (line == "")break;
        if (i == 0) {
            tempStr = line;
            tempStr += "第一行加这个\n";
        }
        else {
            tempStr += line;
            tempStr += "其他行\n";
        }
        i++;
    }
    ofstream outfile(name, ios::out | ios::trunc);
    outfile << tempStr << endl;
}

int main()
{
    int j = 0;
    char* Path = "files/*.*";
    HANDLE hFile;
    LPCTSTR lp = Path;
    WIN32_FIND_DATA pNextInfo;
    hFile = FindFirstFile(lp, &pNextInfo);
    if (hFile == INVALID_HANDLE_VALUE) {
        cout << "failed" << endl;
        exit(-1);//搜索失败
    }
    cout << "路径名:" << Path << endl;

    do {
        //必须加这句,不然会加载.和..的文件而加载不了图片,
        if (pNextInfo.cFileName[0] == .)continue;
        string name = pNextInfo.cFileName;
        cout << name << endl;
        operate(".\\files\\"+name);
        j++;
    } while (FindNextFile(hFile, &pNextInfo));
    system("pause");
    return 0;
    
}

其中 files 为 文件夹名称。

程序功能: 遍历files下的所有文件,并在每行的末尾添加数据,第一行与其他行添加的内容不同。

window下遍历文件并修改