【问题标题】:C++ go through each character of a wstring and replace itC++ 遍历 wstring 的每个字符并替换它
【发布时间】:2013-03-29 11:07:48
【问题描述】:

我想“验证”一个 wstring 并删除不需要的字符。

这是我想做的:

wstring wsInput=L"Some Text $$!$§";

wstring wsNew=L"";

for (int i=0;i<wsInput.size();i++)
{
    wstring wsChar=wsInput.CharacterAt(i);
    wsChar = ToValidWString(wsChar); // ToValidWString will return L"" if the character is not among the valid characters
    wsNew.append(wsChar); 
}

return wsNew;

但是 wstring 没有这样的函数“.CharacterAt()”。 我想这是有原因的,但我还是需要它。

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 请记住字符串不是数组,请使用CharNext 函数或类似的考虑到 unicode 的函数。

标签: c++ wstring


【解决方案1】:

您可以使用运算符[]。这将返回一个wchar,而不是一个字符串,但在我看来这将使您的代码更简单。所以为了让事情更清楚:

for (int i=0;i<wsInput.size();i++)
{
    wchar_t wc =wsInput[i]; // sorry for the name it comes from wchar ;)
    ... do stuff...
}

编辑:要获得由字符串中第 i 个字符组成的 wstring,请使用 substr:

for (int i=0;i<wsInput.size();i++)
{
    wstring ws = wsInput.substr(i, 1);
    ... do stuff...
}

【讨论】:

  • wchar 不是我需要的。我真的需要 wstring。
  • @tmighty 那么你可以使用substr 这样的东西:wsInput.substr(i, 1)
  • 啊,非常感谢! substr 是我一直在寻找的。你能把这个作为你的答案吗?
  • @tmighty 我已将此添加为对我的答案的编辑。我相信这两种方法可能对有类似问题的用户有用,所以我把它们都留在了。
猜你喜欢
  • 2018-07-06
  • 2016-09-09
  • 2014-09-24
  • 2014-12-15
  • 2018-09-17
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多