【问题标题】:c++ skipws in string?c ++在字符串中跳过ws?
【发布时间】:2012-04-27 01:01:16
【问题描述】:

我知道如何输入文本并跳过空格,但是当它是一个字符串时呢?在代码中,我得到一个类似

的字符串

asdasd asdads asdasd asdasd

所以我需要删除其中的所有空间。那么有什么办法可以写skipws(string_text);吗?

【问题讨论】:

  • “删除”是什么意思?你想构造一个拼接出空格的字符串,还是在迭代它时忽略它们?

标签: c++ string spaces


【解决方案1】:

如果你想构造一个值为asdasdasdadsasdasdasdasd的字符串,你可以使用remove-erase idiom:

str.erase( std::remove( str.begin(), str.end(), ' ' ), str.end() );

或使用来自<ctype.h> 的::isspace,

str.erase( std::remove_if( str.begin(), str.end(), ::isspace ), str.end() );

【讨论】:

    【解决方案2】:

    没有通用的方法。您可以串联使用查找/替换来执行此操作,或者您可以使用stringstream(使用您的输入字符串初始化)并使用>> 来获取没有空格的单词并将结果连接到(另一个/相同的)字符串中

    【讨论】:

    • 你指的是什么替换功能?
    • @Attila 那将是 O(N^2)。
    • 你是对的。我想这会留下 stingstream :) 反正我更喜欢你的方法
    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多