c++ - "swscanf"直到 $ 符号才解析字符串

标签 c++ scanf

我有以下代码片段。我希望 swscanf 从字符串“.exe$”中删除 $ 符号,并仅将 .exe 复制到目标位置。但它总是复制“.exe$”

int main()
{
    wchar_t name[10];

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

    return 0;
}

最佳答案

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

您想要的是告诉它扫描除 $ 符号之外的任何宽字符。所以用[^$]替换s:

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

关于c++ - "swscanf"直到 $ 符号才解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50053006/

相关文章:

c++ - 使用 std::accumulate 算法和 lambda 表达式对元素进行计数

C++ 模块 - 为什么从 C++0x 中删除它们?他们以后会回来吗?

c - 为什么我的 fscanf 似乎没有读取任何内容?

c - 当输入多于所需时,sscanf 检查不起作用

c++ - 理解C++框架的设计

c++ - 在多边形内绘制横截面线

c++ - glm::quat 为什么 x,y,z,w 分量的顺序是混合的

c - 用C语言从xml中解析一个字符?

c - 使用 fscanf 读取文件时出错

c - 在 C 语言中,每次使用 scanf 清除缓冲区时,我都应该使用 FLUSH 吗?