我有一个字符串,如果它是一个整数值,我想检查它的初始值,然后读取它,str="100 john smith";
目前我正在使用此代码。
if(isdigit(line.substr(0,1))){}
但不行。如果我的整数是常数然后我将使用line.substr(0,1) == "1"
但我的整数可能非常喜欢0到无限值,但我需要检查我应该是一个整数而不是文件中的任何其他行有字符串。
任何建议。
答案 0 :(得分:0)
std::string
会重载[]
运算符,因此您可以执行以下操作:
if (isdigit(line[0])) { ... }
答案 1 :(得分:0)
我看到你要做的事情,这是正确的,但你需要了解的技术细节
你写line.substr(0,1)
是因为你想要第一个角色。你得到了第一个角色,但你得到的是string
。要直接获得第一个字符,您需要执行line[0]
。
有什么区别? line.substr(0,1)
恰好返回1个字符,但是如果你line.substr(0,2)
那么它会返回2个字符。所以它必须返回可以容纳1或2(或更多)字符的东西。那个东西是string
。无论输入如何,它每次都会返回string
。这就是c ++的工作原理 - 函数总是返回相同的类型。如果必须为某些输入返回一个字符串,则必须为所有输入返回一个字符串。
如果你想要一个角色,你必须使用不能返回超过1个字符的功能。对于字符串,要么是at
成员函数,要么更广泛地使用,只使用[]
opeartor。