如何将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);
}
最佳答案
C:/User
部分告诉我您正在使用Windows。那很重要;您应该已经提供了该信息。
您无法控制Windows用户名。它们的格式不能用char** argv
表示。替代方法是int wmain(int argc, wchar_t** argv)
。这很容易转换为std::vector<std::wstring>
。
关于c++ - 将char * argv []转换为wstring,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45539994/