在以下代码中,如何从参数(argv
)读取 path1 和 path2 ?如何将argv[1]
和argv[2]
转换为宽字符串格式,以便可以将它们用作_wrename
参数?
int main(int argc, const char *argv[])
{
const wchar_t path1[] = L"/tmp/a";
const wchar_t path2[] = L"/tmp/b";
_wrename(path1, path2);
return 0;
}
答案 0 :(得分:0)
您可以使用以下内容:
std::wstring s2ws(const std::string& s) {
int slength = (int)s.length() + 1;
int len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
std::wstring r(len, L'\0');
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, &r[0], len);
r.resize(r.size() - 1);
return r;
}
答案 1 :(得分:0)
使用mbstowcs
size_t mbstowcs (wchar_t* dest, const char* src, size_t max);
将多字节字符串转换为宽字符串。它将src指向的多字节序列转换为宽字符的等效序列(存储在dest指向的数组中),直到最大宽字符被翻译或直到多字节序列src中遇到空字符为止(它也被翻译和存储,但不计入函数返回的长度。)
如果成功翻译了最大字符数,则存储在dest中的结果字符串不会以空值终止。
此函数的行为取决于所选C语言环境的LC_CTYPE类别。