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