"swscanf" не анализирует строку до знака $ - PullRequest
0 голосов
/ 27 апреля 2018

У меня ниже фрагмент. Я ожидаю, что swscanf удалит знак $ из строки ".exe $" и скопирует только .exe в место назначения. Но это всегда копирование ".exe $"

int main()
{
    wchar_t name[10];

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

    return 0;
}

1 Ответ

0 голосов
/ 27 апреля 2018

С %ls вы говорите ему использовать как можно больше широких символов. Знак $ впоследствии игнорируется.

Вместо этого вы хотите, чтобы он сканировал любые широкие символы, кроме знака $. Поэтому замените s на [^$]:

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