FindFirstFile不能将const char转换为basic_string

c++ FindFirstFile Cannot convert const char to basic_string

本文关键字:basic string 转换 char 不能 const FindFirstFile      更新时间:2023-10-16

FindFirstFile函数不知怎么的不接受我的wstring (nor string)作为参数传递。

我得到一个编译错误

Cannot convert const char[9] to std::basic_string

#include "stdafx.h"
#include <string>
#include <iostream>
#include <stdio.h>
#include <Windows.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    wstring path = "C:\*.dmp";
    WIN32_FIND_DATA dataFile;
    HANDLE hFind;
    hFind = FindFirstFile (path.c_str(), &dataFile);

    cout << "The name of the first found file is %s n" dataFile.cFileName << endl;
    FindClose hFind;
    getchar();
    return 0;
}

我得到一个编译错误

Cannot convert const char[9] to std::basic_string

你需要一个宽字符字面值来初始化std::wstring:

wstring path = L"C:\*.dmp";
            // ^

你还漏放了另一个<<

cout << "The name of the first found file is " << dataFile.cFileName << endl;`
                                            // ^^

还要注意std::ostream的输出格式不同于printf()格式字符串样式。注意我从上面的示例中删除了%s

变化

const char path[] = "C:\*.dmp";           // C-style string
hFind = FindFirstFile(path, &dataFile);    // Pass the string directly