我需要知道带有浮点数的文本文件中的列数。
我这样做是为了知道行数:
inFile.open(pathV);
// checks if file opened
if(inFile.fail()) {
cout << "error loading .txt file for reading" << endl;
return;
}
// Count the number of lines
int NUMlines = 0;
while(inFile.peek() != EOF){
getline(inFile, dummyLine);
NUMlines++;
}
inFile.close();
cout << NUMlines-3 << endl; // The file has 3 lines at the beginning that I don't read
.txt的一行:
189.53 58.867 74.254 72.931 80.354
值的数量可能因文件而异,但不在同一文件中。
每个值在“。”后面都有一个可变的小数位数。 (点)
值可以用空格或TAB分隔。
谢谢
答案 0 :(得分:3)
给定一条你读过的行,名为line
,这有效:
std::string line("189.53 58.867 74.254 72.931 80.354");
std::istringstream iss(line);
int columns = 0;
do
{
std::string sub;
iss >> sub;
if (sub.length())
++columns;
}
while(iss);
我不喜欢这样读取整行,然后重新解析它,但它有效。
还有各种其他分割字符串的方法,例如提升的<boost/algorithm/string.hpp>
请参阅上一篇文章here
答案 1 :(得分:0)
您可以阅读一行,然后split it并计算元素数量。
或者您可以读取一行,然后将其作为一个数组进行迭代,并计算 space 和\t
个字符的数量。
答案 2 :(得分:0)
如果这三个假设成立,你可以很容易地做到这一点:
dummyLine
已定义,以便您可以在while
循环范围之外访问它dummyLine
循环后while
将包含的内容)如果所有这些都是真的,那么在while
循环后,你只需要这样做:
const int numCollums = std::count( dummyLine.begin(), dummyLine.end(), '\t' ) + std::count( dummyLine.begin(), dummyLine.end(), ' ' ) + 1;