0

我有一个字符串,如果它是一个整数值,我想检查它的初始值,然后读取它,str="100 john smith"; 目前我正在使用这个代码。

if(isdigit(line.substr(0,1))){}

但不工作。如果我的整数是常量,那么我将使用line.substr(0,1) == "1"但我的整数可能非常喜欢 0 到无限值,但我需要检查我应该是一个整数,而不是文件中具有字符串的任何其他行。有什么建议么。

4

2 回答 2

0

std::string重载[]运算符,因此您可以执行以下操作:

if (isdigit(line[0])) { ... }
于 2013-09-27T01:56:00.907 回答
0

我知道您要做什么,这是正确的,但是您需要了解一些技术细节

你写作line.substr(0,1)是因为你想要第一个字符。你得到了第一个字符,但你得到了一个string. 要直接获取第一个字符,您需要执行line[0].

有什么不同?line.substr(0,1)碰巧返回 1 个字符,但如果你这样做line.substr(0,2)了,它将返回 2 个字符。所以它必须返回可以容纳 1 个或 2 个(或更多)字符的东西。那东西是一个stringstring 无论输入如何,它都会返回一个。这就是 c++ 的工作原理——函数总是返回相同的类型。如果它必须为某些输入返回一个字符串,它必须为所有输入返回一个字符串。

如果你想要一个字符,你必须使用一个不能返回超过 1 个字符的函数。这对于字符串来说,要么是at成员函数,要么是更广泛使用的,只是使用操作[]符。

于 2013-09-27T01:56:25.890 回答