测试行尾和空格

Test for end of line and white space

本文关键字:空格 测试      更新时间:2023-10-16

我正在通过 for 循环读取一行中 5 个双精度的文件并将它们存储到结构向量中,有时该行上的双精度值少于 5 个。该文件看起来像

111.111 222.222 333.333 444.444 555.555

666.666

777.777(空格) 888.888 999.999

struct temp_struct{
    double d1,d2,d3,d4,d5
};
vector<temp_struct> data;
for(int i=0;i<3;i++)
    File>>data.at(i).d1>>data.at(i).d2>>data.at(i).d3>>data.at(i).d4>>data.at(i).d5;

有没有办法测试666.666之后以及777.777和888.888之间的空白空间。

因为现在我读取它的方式,在 666.666 之后,它将转到文件的下一行并读取 777.777 和 888.888 999.999,以便结构看起来像data.at(1).d1=666.666 data.at(1).d2=777.777 data.at(1).d3=888.888 和 data.at(1).d4=999.999 我宁愿

data.at(1).d1=666.666, break because of end of line 
data.at(2).d1=777.777, data.at(2).d2=0, data.at(3).d3=888.8888

我正在用VS2010编程C++

解析基于行的文本的常用方法是将std::getline()std::istringstream结合使用,例如:

for (std::string line; std::getline(in, line); ) {
    std::istringstream lin(line);
    // parse the line using `line`
}

不过,还有其他方法。例如,可以将流设置为不考虑换行空格:这样,在遇到换行符时尝试读取数字,尝试读取值将失败!更改被视为空格的方法是安装具有自定义版本的自定义std::locale对象 std::ctype<char> .