Я пытался отменить недопустимые значения, то есть whitespaces
и characters
, поскольку я хочу только разобрать двойные значения.Проверка if * char пробела или символов C++
Мой .txt
файл выглядит следующим образом ...
1.45-1.46
-1.56
1.78-dead
-abc
1.34-2.45
1.56-9.01
В принципе, я только хочу, чтобы хранить действительные дублей, так что первая линия 1.45-1.46
, пятая строка 1.34-2.45
и последняя строка 1.56-9.01
действительны и остальные недействительны.
Я написал код, однако он не распознает whitespace
или characters
. Я получаю ошибку ISO C++ forbids comparison between pointer and integer
.
Это код
char **marks;
marks = new char*[7]
for(int i=0; i<7; i++)
{
marks[i] = new char[64];
istreams.getline(marks[i], 64);
char *delims;
delims = strtok (marks[i]," -");
while (delims != NULL)
{
if(delims == '') // DOES NOT LIKE THIS, I WANT IT TO CHECK FOR WHITESPACE AND ALPHA CHARACTERS LIKE 'A', 'B', 'C'...
{
cout << "Invalid double" << endl;
}
else
{
cout << atof(delims);
delims = strtok (NULL, " ,.-");
}
}
}
вы используете 'new' и' cout', поэтому это не C. Но почему бы не использовать 'std :: string'? – crashmstr
Подсказка: 'delims' является * указателем * символу. –
Этот код не выполняет никакого ввода * вообще *. Вы выделяете 'знаки' как' new char [64] ', затем отправляете содержимое неопределенного содержимого данных прямо на' strtok' и таким образом вызываете * неопределенное поведение *. – WhozCraig