【问题标题】:Delimiter at the start of a string字符串开头的分隔符
【发布时间】:2018-10-20 09:03:52
【问题描述】:

我正在根据分隔符 "/" 将字符串拆分成更小的部分。

stringstream ss(stringToSplit);
string item;
vector<std::string> splitStrings;
while (std::getline(ss, item, delimiter))
{
   splitStrings.push_back(item);
}

一些字符串字符串看起来像这样:

home/user/folder
/home/user/folder
banana/grape/onion
/banana/grape/onion

我遇到的问题是前面有分隔符"/" 的字符串在结果向量的开头创建了一个空项。有没有办法避免这种情况或删除空项目? 我已尝试删除向量中的所有 " " 字符串,但它们仍然存在。

【问题讨论】:

  • 如果第一个字符是 / 分隔符,是什么阻碍您检查 item,然后将其剥离(例如使用 substr())?
  • @πάντα ῥεῖ:那行得通,我不知道为什么我什至没有想到这一点。我想既然我已经问过了,有没有办法做我最初尝试的事情?

标签: c++ string vector delimiter stringstream


【解决方案1】:

好吧,您可以像这样跳过getline() 检测到的空字符串:

stringstream ss(stringToSplit);
string item;
vector<std::string> splitStrings;
while (std::getline(ss, item, delimiter))
{
   if(!item.empty()) { // <<<<<<<<<<<<<
       splitStrings.push_back(item);
   }
}

【讨论】:

  • 这正是我想要的。谢谢。
  • @Kirby 您可能还需要考虑输入中的空格。 Here 的一些信息如何有效地做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2023-03-21
  • 2021-03-05
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
相关资源
最近更新 更多