【问题标题】:How can I check if the first char in a string is '-'?如何检查字符串中的第一个字符是否为'-'?
【发布时间】:2020-03-01 20:20:02
【问题描述】:

一般来说,我需要检查给定的字符串是否为数字。所以我认为我的函数会检查:
1.如果第一个字符是'-'我想检查它后面是否只有数字。
2. 如果第一个字符为 0,则字符串的长度必须小于 3。

问题:我找不到获取字符串中第一个字符的方法,就像我会在 C 中那样(只要看看它是否等于 ASCII 数字),或者在 Java 中,我会比较字符串等于()。

【问题讨论】:

  • 要查看字符串s 中的第一个字符(无论是C 字符串还是C++ 字符串),请使用s[0]。要查看是否是 '-',只需执行以下操作:if (s[0] == '-')。或者,如果您认为自己的 Java 经验相关,可以将 C++ 字符串与 == 进行比较。
  • 使用std::strtol函数是检查字符串是否为数字的好方法

标签: c++ string text char


【解决方案1】:

这是一个基于流解析数字的便捷实用函数:

template <class T>
bool try_parse_number(std::string_view s, T& v, const std::locale& locale)
{
    std::stringstream stream;

    stream.imbue(locale);

    stream << s;

    stream >> v;

    return !stream.fail();
}

需要包含 &lt;sstream&gt;&lt;string_view&gt;&lt;locale&gt;,尽管您可以去掉语言环境处理。

您可以进一步创建自定义语言环境和数字方面,以更大程度地控制数字解析。

【讨论】:

  • 这个很贵,而且忽略了问题中的一些要求。
  • @Pete Becker,我根据额外要求是 XY 问题的可能性发布了答案。创建健壮的数字字符串处理并不便宜。
  • 如果您怀疑声明的要求不真实,请在对该问题的评论中提出。这就是评论的目的。
【解决方案2】:

我认为在 java 中使用函数会容易得多 --> s.charAt(0)。您可以轻松获取该字符串的第一个字符并存储该字符,然后您可以将其与任何内容进行比较。

【讨论】:

  • 首先,问题在标签中明确指定了 C++。其次,每种语言都可以获得字符串的第一个字符。事实上,在 C++ 中它比在 Java 中简单得多,因为 C++ 只是 s[0]
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2012-12-19
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2013-05-12
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多