" swscanf"不解析字符串直到$ sign

时间:2018-04-26 22:57:43

标签: c++ scanf

我有以下片段。我期待swscanf从字符串" .exe $"中删除$ sign;并仅将.exe复制到目的地。但它总是复制" .exe $"

int main()
{
    wchar_t name[10];

    swscanf(L".exe$", L"%ls$", name);
    std::wcout<<wstring(name)<<std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

使用%ls,你告诉它消耗尽可能多的宽字符。之后的$符号将被忽略。

您想要的是告诉它扫描除$符号之外的任何宽字符。因此,将s替换为[^$]

swscanf(L".exe$", L"%l[^$]", name);