Я пытаюсь определить, является ли ввод из ifstream целым числом или строкой в C ++ 11. ifstream выдаст либо строку, либо int, и мне нужно сделать разные вещи для каждого. Если это int, мне нужно использовать первые два в качестве местоположения в 2d массиве с третьим в качестве значения. Если это строка, мне нужно создать объект NodeData.
for (;;) {
int n1, n2, n3;
string s1;
infile >> s1;
//trying isdigit and casting string to int
if (isdigit( stoi(s1.c_str()))) {
//check if last 2 ints exist
if ((infile >> n2 >> n3)) {
n1 = stoi(s1);
//end of input check
if (n1 == 0) {
break;
}
C[n1][n2] = n3;
}
}
else {
NodeData temp = NodeData(s1);
data[size] = temp;
size++;
}
} Я пробовал isdigit и несколько разных типов приведения, но они не работали. Он продолжает думать, что число в строке не является целым числом, когда оно есть.