将 char* argv[] 转换为 wstring

Convert char* argv[] to wstring

如何将 char* argv[] 转换为 wstring?我使用 "/d"argv 获取字符串路径并将其作为函数的参数插入 ArrayOfDirContents.

int main(int argc, char *argv[])
{
    double minimum = 10;
    double input;
    char* filename;
    wstring adr(L".");
    const wchar_t* adresar; 

    adresar = adr.c_str();

    char *p;

    int num;


    errno = 0;
    long conv;

    for (unsigned i = 1; i < argc; i++) {   
        conv = strtol(argv[i], &p, 10);

        // Check for errors: e.g., the string does not represent an integer
        // or the integer is larger than int
        if (errno != 0 || *p != '[=10=]' || conv > INT_MAX) {
            // Put here the handling of the error, like exiting the program with
            // an error message
            cout << "";
        }
        else if(strcmp(argv[1], "/a") == 0) {
            // No error
            num = conv;
            minimum = num;
        }
        else if(strcmp(argv[3], "/d") == 0) {
            int mbtowc(wchar_t* adresar, const char* argv[4], std::size_t n);
        }
        else {
            adresar = adr.c_str();
        }

        getchar();
    }

        string nazev_souboru;
        vector<string> strpole;
        int chyby, l;
        chyby = 0;
        bool vysledek;
        vysledek = ArrayofDirContents(adresar, nazev_souboru, strpole);

        vector<string>::iterator i;

        if (vysledek == true) {
            writeFile(nazev_souboru, strpole, chyby, l, minimum);
            writeSms(strpole, chyby, l, minimum);
            for (i = strpole.begin(); i < strpole.end(); i++) {
                cout << *i;
                cout << '\n';

            }
        }
        //SaveDirectoryContents(L".", nazev_souboru);

}

C:/User 部分告诉我您正在使用 Windows。这很重要;你应该已经提供了那个信息。

您无法控制 Windows 用户名。它们可以采用无法表示为 char** argv 的格式。备选方案是 int wmain(int argc, wchar_t** argv)。这很容易转换为 std::vector<std::wstring>