0

嗨,当我编译我的代码时,我在 2 行中遇到了这个错误,其中包括:if (!processName.compare(processInfo.szExeFile)) 我也使用了多字节字符,但我不知道为什么会有同样的问题?

我的错误是:

int std::basic_string<_Elem,_Traits,_Ax>::compare(const std::basic_string<_Elem,_Traits,_Ax> &) const' : 
cannot convert parameter 1 from 'CHAR [260]' to 'const std::basic_string<_Elem,_Traits,_Ax> &'

和我的代码:

 #include<fstream>
 #include<sstream>
 #include<string>
 #include<iostream>
 #include<iomanip>
 #include<cstdlib>
 #include<Windows.h>
 #include<TlHelp32.h>

using std::ifstream;
using std::string;
using std::getline;
using std::ios;
using std::cerr;
using std::cout;
using std::endl;
using std::fixed;
using std::left;
using std::right;
using std::showpoint;
using std::cin;

class check {

public :


void check_seta () {

    ifstream cfgm2("fix.cfg",ios::in);

    string cfgLine;

    while (getline(cfgm2,cfgLine)) {

        if (string::npos != cfgLine.find("pn ff")){

             if (cfgLine.at(19) == '0'){

                 MessageBoxW(NULL , L"naananaana",NULL,MB_ICONERROR); 

                 std::wstring Processname(L"lol.exe");

                 DWORD ProcessId = FindProcessId(Processname);

                 HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, TRUE ,ProcessId);

                 TerminateProcess(pHandle,0);

                 CloseHandle(pHandle);
             }
             break;
        }

    }
  }

 DWORD FindProcessId(const std::wstring& processName)
    {
    PROCESSENTRY32 processInfo;
    processInfo.dwSize = sizeof(processInfo);

    HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if ( processesSnapshot == INVALID_HANDLE_VALUE )
    return 0;

    Process32First(processesSnapshot, &processInfo);

    // I have problem in this line

    if ( !processName.compare(processInfo.szExeFile) )
    {
        CloseHandle(processesSnapshot);
        return processInfo.th32ProcessID;
    }

    while ( Process32Next(processesSnapshot, &processInfo) )
    {

    // and I have problem with this line

        if ( !processName.compare(processInfo.szExeFile) )
        {
            CloseHandle(processesSnapshot);
            return processInfo.th32ProcessID;
        }
    }

    CloseHandle(processesSnapshot);
    return 0;
  }
 };
4

1 回答 1

1

processName 是一个 wstring。wstring和string不兼容,wstring也不能用char *初始化。

于 2013-06-02T08:45:25.653 回答