C++ 字符串initial是一个整数
我有一个字符串,我想检查它的首字母是否为整数值,然后读取它,C++ 字符串initial是一个整数,c++,C++,我有一个字符串,我想检查它的首字母是否为整数值,然后读取它,str=“100 john smith” 目前我正在使用这个代码 if(isdigit(line.substr(0,1))){} 但不起作用。如果我的整数是常量,那么我将使用line.substr(0,1)=“1”但是我的整数可能非常像0到无穷大的值,但是我需要检查我应该是整数,而不是文件中任何其他有字符串的行。 任何建议。std::string重载[]运算符,因此您可以执行以下操作: if (isdigit(line[0])) {
str=“100 john smith”代码>
目前我正在使用这个代码
if(isdigit(line.substr(0,1))){}
但不起作用。如果我的整数是常量,那么我将使用line.substr(0,1)=“1”
但是我的整数可能非常像0到无穷大的值,但是我需要检查我应该是整数,而不是文件中任何其他有字符串的行。
任何建议。std::string
重载[]
运算符,因此您可以执行以下操作:
if (isdigit(line[0])) { ... }
我知道你想做什么,这是正确的,但是你需要知道一些技术细节
您编写line.substr(0,1)
,因为您需要第一个字符。您得到第一个字符,但它是在字符串中得到的。要直接获取第一个字符,需要执行行[0]
有什么区别line.substr(0,1)
恰好返回1个字符,但如果您执行了line.substr(0,2)
操作,则它将返回2个字符。因此,它必须返回可以包含1个或2个(或更多)字符的内容。这是一个字符串
。无论输入是什么,它每次都返回一个字符串。C++就是这样工作的——函数总是返回相同的类型。如果必须为某些输入返回字符串,则必须为所有输入返回字符串
如果需要一个字符,则必须使用不能返回超过1个字符的函数。对于字符串而言,它要么是at
成员函数,要么更广泛地使用,只是使用[]
opeartor