将char * argv []转换为wstring

时间:2017-08-07 05:35:32

标签: c++ wchar-t 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 != '\0' || 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);

}

1 个答案:

答案 0 :(得分:4)

C:/User部分告诉我你正在使用Windows。这很重要;你应该提供这些信息。

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