2014-01-23 2 views
0

У меня есть файл со строками и целыми числами. Например, так мой файлКоличество данных в файле в C++

string int int string int int 

Как получить количество строк только в файле? Я думал написать count в начале файла. Но при чтении счет не был правильным.

+0

что вы устали до сих пор ??? Пожалуйста, поставьте здесь –

ответ

0

Если это текстовый файл, вы можете легко прочитать «слова» из файла, а затем определить, если они являются числами или не используя atoi, atol, atoll, atoq. И когда вы получили ответ (то есть: это число или нет), просто увеличьте переменную :)

+0

'atoi' и т. Д. Не сообщите вам, являются ли они номерами. –

0
std::string word; 
while (std::cin >> word) 
{ 
    std::istringstream iss(word); 
    int my_int; 
    char garbage; 
    num_ints += (iss >> my_int) && !(iss >> garbage); 
    ++num_words; 
} 
num_strings = num_words - num_ints; 
+0

Какова роль 'iss >> garbage'? Если 'iss >> my_int' будет успешным, оно не будет оценено, и если' iss >> my_int' не будет выполнено, 'iss' находится в состоянии отказа, и все последующие данные не будут выполнены. –

+0

@JamesKanze - хорошая точка - исправлена. Cheers –

0

Проанализируйте каждый элемент. Для каждого элемента сравнивайте значения ascii символов в нем. Если между 48 и 57 (включительно), это int. В противном случае это строка.

+1

'-1' не' int'? (И кто говорит, что символы ASCII. Использование 'isdigit' было бы намного лучшей идеей.) –

Смежные вопросы