使用java太长时间,已经习惯了其数据类型转换及处理的便捷。但是,现在使用c++,不得不去面对其数据类型转换,以及相关的处理。瞬间感觉奔溃,一天中,很多时间都交给度娘了...
文件拷贝
本来很方便,提供了CopyFile,但是看到入参,瞬间崩溃,普通字符串不行,需要宽字符串,于是,下面的demo出现了。
CopyFile(L"d:\\demo.txt", L"e:\\demo.txt", FALSE);//false代表覆盖,true不覆盖
这样确实可以,但是文件路径不是固定的啊,由外界传入的string怎么办呢?
CopyFile前两个入参是LRCWSTR,可以传入wstring,于是再做下一步操作
string转wstring
std::wstring StringToWString(const std::string& str)
{
int num = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
wchar_t *wide = new wchar_t[num];
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, wide, num);
std::wstring w_str(wide);
delete[] wide;
return w_str;
}
于是上面的代码变成了:
CopyFile(StringToWString(strPath).c_str(), StringToWString(fileName).c_str(), FALSE);//false代表覆盖,true不覆盖
文件删除
同样是使用了上面的StringToWString
DeleteFile(StringToWString(fileName).c_str());
原文:简书ThinkinLiu 博客: IT老五
ps: 还有不少类型的转换问题,后面再慢慢写...
![9166166-931fd471780b7e64.jpg](https://i-blog.csdnimg.cn/blog_migrate/8c72561e15bc8df2ec6d15d987b1204e.webp?x-image-process=image/format,png)
IT老五(it-lao5):关注公众号,一起源创,一起学习!