我正在编写一个程序,我需要输入一行输入,其中包含一个字母和两个带有空格的数字。让我们说,像“I 5 6”。
我使用std :: getline将输入作为字符串输入,这样就不会出现任何空白问题,然后使用for循环来浏览字符串中的各个字符。只有当第2个和第3个字符(第3个和第5个计算空白字符)是数字时,我才需要执行某个条件。
如何测试字符串中某个位置的字符是否为int?
答案 0 :(得分:2)
为了您的目的,我会将该行放入std::istringstream
并使用普通流提取运算符从中获取值。
也许像
char c;
int i1, i2;
std::istringstream oss(line); // line is the std::string you read into with std::getline
if (oss >> c >> i1 >> i2)
{
// All read perfectly fine
}
else
{
// There was an error parsing the input
}
答案 1 :(得分:1)
您可以使用b[-1] = b[-1] + b.pop()
。这是一个例子:
isalpha
/* isalpha example */
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i=0;
char str[]="C++";
while (str[i])
{
if (isalpha(str[i])) printf ("character %c is alphabetic\n",str[i]);
else printf ("character %c is not alphabetic\n",str[i]);
i++;
}
return 0;
}
检查c是否是字母。 http://www.cplusplus.com/reference/cctype/isalpha/
输出将是:
字符C是字母字符+不是 字母字符+不是字母
对于数字使用isalpha
:
isdigit
输出将是:
1776年之后的那一年是1777年
/* isdigit example */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main ()
{
char str[]="1776ad";
int year;
if (isdigit(str[0]))
{
year = atoi (str);
printf ("The year that followed %d was %d.\n",year,year+1);
}
return 0;
}
检查c是否为十进制数字。 http://www.cplusplus.com/reference/cctype/isdigit/
答案 2 :(得分:0)
它有一个函数isdigit()
:
要检查字符串s
的第2个和第3个字符,可以使用以下代码:
if (isdigit(s[2]) && isdigit(s[3]))
{
// both characters are digits
}
但在您的情况下(s == "I 5 6"
),您似乎需要检查s[2]
和s[4]
。