【问题标题】:How use function _wsplitpath C++如何使用函数_wsplitpath C++
【发布时间】:2013-11-02 16:56:30
【问题描述】:

我有这样的代码

wstring filename;
wstring dirname;
wstring disk;

然后我想用这种方式分割文件的完整路径

_wsplitpath(&filepath[0],&disk[0],&dirname[0],NULL,NULL);

但我有一个例外。我做错了什么?

【问题讨论】:

    标签: c++ file path wstring


    【解决方案1】:

    使用_wsplitpath_s 防止缓冲区溢出。还可以使用返回指向可变字符的指针并使用大小初始化它们的向量:

    std::wstring filename;
    std::vector<wchar_t> disk(8);
    std::vector<wchar_t> dirname(1024);
    
    _wsplitpath_s(
        filename.c_str(),
        disk.data(), disk.size(),
        dirname.data(), dirname.size(),
        nullptr, 0,
        nullptr, 0
    );
    

    【讨论】:

    • filename.c_str() 不是 siut,因为文件名包含 Unicode 字符串
    • filename.c_str() 返回的结果与 &amp;filename[0] 完全相同,只是它是 CharT const* 而不是 CharT*(这在此处无关紧要)。
    • @ПавелВоевода c_str() 代表“C 字符串”——即以空字符结尾。不是“字符字符串”。它适用于wstring。
    • 没有。 std::wstring 是 std::basic_string&lt;wchar_t&gt; 的别名。见en.cppreference.com/w/cpp/string/basic_string。
    猜你喜欢
    • 2011-04-05
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多