【问题标题】:how to remove Ì from data in C [closed]如何从 C 中的数据中删除 Ì [关闭]
【发布时间】:2012-10-16 08:32:26
【问题描述】:

我得到了这样的价值

"RE000022000500200Ì 0.00 0.1 0.129.8#####-  97-   2#####-   1#####   960.504.00 0: 00.000.00 8: 013:52 0: 021:52############2.00.0   "

在对上述数据进行一些处理后,我想要一个这样的值,请问你应该删除“Ì”的逻辑是什么

"RE000022000500200 0.00 0.1 0.129.8#####-  97-   2#####-   1#####   960.504.00 0: 00.000.00 8: 013:52 0: 021:52############2.00.0   "

【问题讨论】:

  • 我通过检查“\0”删除了 null,但不知道如何删除“Ì”
  • 请粘贴源代码。
  • “我得到”从哪里来?如何?你做了什么?你试过什么?为什么这被标记为 C 和 C++?
  • 如果您提供一些关于Ì代表什么的上下文会有所帮助:这是一个错误吗?它总是在一个固定的地方还是作为一个分隔符运行?发布您迄今为止所做的努力将有助于贡献者评估您正在尝试做的事情,因此他们将更有能力为您提供帮助。
  • 你的问题是关于逻辑的。逻辑很简单,您必须将第一个'Ì'之后的字符向后复制一个字符。同样,第二个 'Ì' 之后的所有字符都必须向后复制两个字符等。这样做,你最终会得到相同的字符串,但所有的 'Ì' 都被删除了。

标签: c++ c visual-studio-2010 parsing


【解决方案1】:

如果你的数据中没有值为0xC3的字符,你可以遍历你的数据字符串,如果出现一个值为0xC3的字符,则删除该字符和下一个字符。

【讨论】:

    【解决方案2】:

    如果您使用std::string 来保持您的价值,这很容易。

    #include <string>
    #include <algorithm>
    
    std::string input = ...;
    input.erase(std::remove(input.begin(), input.end(), 'Ì'), input.end());
    

    如果你坚持使用 C 字符串或数组,那就更复杂了。

    我从上面的 cmets 中看到您正在使用 C 字符串。我建议你改用 C++ 字符串。

    【讨论】:

    • 我认为这行不通,'Ì' 在 UTF-8 中是 0xC3 0xAC。 fileformat.info/info/unicode/char/ec/index.htm
    • @jrok:我们甚至不知道 OP 是否使用 UTF8 或其他任何东西,或者他是否必须更改字符串,因为我们知道打印缓冲区可能是个问题垃圾数据...
    • @jrok 我没想到。然而,正如 PlasmaHH 所说,我怀疑未初始化的数据。不幸的是,如果 OP 不发布一些代码,那么他将不会获得太多有用的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2019-09-16
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多