У меня есть куча файлов данных мне нужно прочитать в какой-то многомерном контейнер, все из которых имеют следующий вид:Подсчет количества точек в линии от ifstream
a1,a2,a3,...,aN,
b1,b2,b3,...,bN,
c1,c2,c3,...,cN,
................
z1,z2,z3,...,zN,
Я знаю from this previous question что быстрый способ подсчета общего количества строк в файле может быть достигнут следующим образом:
std::ifstream is("filename");
int lines = std::count(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), '\n');
Это позволяет мне знать, что г, общее число наборов данных для чтения в каждый из которых содержит N данных точки. Следующая задача состоит в том, чтобы подсчитать количество значений данных в строке, для которой я могу сделать следующее:
std::ifstream is("filename");
std::string line;
std::getline(is, line);
std::istringstream line_(line);
int points = std::count(std::istreambuf_iterator<char>(line_), std::istreambuf_iterator<char>(), ',');
я могу быть уверен, что каждый файл имеет одинаковое количество значений данных в каждой строке. Мой вопрос в том, есть ли более хороший/более быстрый способ достижения выше, не прибегая к использованию getline и демпинг одной строки в строку? Мне было интересно, можно ли это сделать с потоковыми буферами, но, проведя немного поиска, мне это не совсем понятно.
Любая помощь будет очень признательна, благодарю вас!
Выглядит хорошо. Были ли у вас какие-то проблемы? Разве это не соответствует вашим требованиям к производительности? Это очень откровенный вопрос о том, какую «помощь» вы действительно ищете здесь. Если бы я был вами, я бы просто улыбнулся тому, что вы сделали до сих пор, и переходите к следующей задаче в вашем проекте. –