c++基础(一):string转wstring及文件拷贝

  • 3,359 views
  • 阅读模式

使用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: 还有不少类型的转换问题,后面再慢慢写...

作者:ThinkinLiu
链接:https://www.jianshu.com/p/21fa9acb8c55
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

weinxin
扫码关注微信公众号--IT老五
微信扫一扫关注公众号,获取更多实用app,订阅地址不定时更新
Liu, Thinkin
  • 本文由 发表于 2018-12-13 19:57:23
  • 转载请务必保留本文链接:https://itlao5.com/706.html
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定