【问题标题】:how to remove only one hyphen (first occurance) from the string(file name) in CPP?如何从 CPP 中的字符串(文件名)中只删除一个连字符(第一次出现)?
【发布时间】:2019-08-01 06:04:43
【问题描述】:

如何从 CPP 中的字符串(文件名)中只删除一个连字符(第一次出现)?假设我有文件名 DS-NMDX-2C219-FK。假设我只想删除第一个连字符? DS-NMDX 之间?

【问题讨论】:

  • 嗨 Gaurav,您能告诉我们您目前的尝试吗?你看过std::string 可用的功能吗? cplusplus.com/reference/string/string
  • 使用find() 查找并使用erase() 删除,不是吗?
  • 不清楚位。你到底在期待什么。似乎是删除字符串中的特定字符可以很容易地实现。
  • @santoshdhanawade 他的问题对我来说非常直截了当,他是新人。哪部分不清楚?我可以帮你理解他的意思。

标签: c++ string hyphen


【解决方案1】:

David 的回答基本上是正确的,但我们还需要添加保护以保持代码在所有可能的输入中都能正常工作,因为在输入字符串中可能找不到“-”。

示例代码如下:

int main(int argc, char *argv[])
{
    std::string input = "DS-NMDX-2C219-FK";
    // .find return the position of first occurence of '-'
    auto pos = input.find('-');
    // '-' might not exist in input, so need protection here
    if (pos != std::string::npos) {
        input.erase(pos, 1);
    }
    std::cout << input << std::endl;
    return 0;
}

【讨论】:

    【解决方案2】:
    string s = 'DS-NMDX-2C219-FK';
    cout<< s.erase(s.find('-'),1);
    

    【讨论】:

      【解决方案3】:

      你需要先找到它,使用find(必须#include ):

      int find = str.find("-"); 
      

      这会将“-”第一次出现的位置存储在 int “find”中。

      然后,您可以执行以下操作:

      str.erase(find,1);
      

      这会从 find 位置开始擦除并擦除一个位置。

      工作代码:

      int main() {
      
       string str = "DS-NMDX-2C219-FK"; 
      
       int finder = str.find("-");  // find the position of -
      
       str.erase(finder,1);  // start at position of -, erase one position
      
       cout << str << endl;
      
      
      return 0;
      
      }
      

      【讨论】:

      • 一对笔记,(1) std::basic_string<CharT,Traits,Allocator>::find 返回size_type,例如size_t,而不是 int。 (2)str.erase (str.find("-"),1);不是更简单吗?
      • 你又来了! :) 我决定为他保持简单。当我第一次开始编码时,人们希望我以各种方式编码。通过将其放入单独的代码行中,我认为它会通过保持简单来帮助他更多。如果他很懒惰并想要免费代码,他就有了。但他想学习,我认为最好保持直截了当。至少,只是我的看法。
      • @DavidC.Rankin - 有点跑题了,但是根据您对 NWS 的了解,我不得不问:您熟悉 python 吗?我有几个月来需要帮助的 GOES-16 脚本。你可能会感兴趣。
      • 咯咯笑……对我来说,python 是一条蛇。我可以在一个窗口中打开教程并在另一个窗口中打开脚本来摸索它,但仅限于那个级别。有一天,我将不得不与它交朋友,但我在很多很多年前来自 fortran 和 C 环境,并且一直使用编译语言。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多