【发布时间】:2020-09-15 16:59:21
【问题描述】:
我正在使用 RHEL5.4、QT4.8 只有文件的第一行在 getline 中得到处理。 我在 stringstream ss 上的 qDebug 打印文件中的所有行。 我在记录结构上的 qDebug 重复文件第一行中的数据以获得总数 文件中的行数。 我在结果向量上的 qDebug 再次重复文件第一行中的数据以获得总数 文件中的行数。
首先我在头文件中声明一个记录结构。
struct data_rec
{
std::string name;
std::string value;
};
std::ifstream myfile("foo.bar");
if(!myfile.is_open()){
qDebug() << "Could not open file";
}else {
qDebug() << "File opened";
std::string line;
std::stringstream ss;
std::stringstream tss;
while(std::getline(myfile,line))
{
data_rec records;
tss.str("");
ss<<line<<std::endl;
tss<<line<<std::endl; //; temp stringstream
std::getline(tss, records.name, ',');
std::getline(tss, records.value, ',');
qDebug()<<"!!!" << records.name.c_str();
qDebug()<<"!!!" << records.value.c_str();
result.push_back(records);
tss.str(std::string());
}
for(int x = 0; x < 46; x++)
{
QString tstr1 = QString::fromStdString(result[i].name);
QString tstr2 = QString::fromStdString(result[i].value);
qDebug() << tstr1 << " -> " << tstr2;
}
qDebug() << QString::fromStdString(ss.str());
qDebug() << "\n////////////////////////////////////////\n";
myfile.close();
}
【问题讨论】:
-
你的文件里有什么,你期望什么,你得到什么?
-
@EPurdy edit 你的问题是要添加该信息,不要放在 cmets 中。
-
谁将其作为副本关闭,此问题与格式化提取后
getline失败无关,因为此代码中没有格式化提取,getline是唯一正在执行的提取.我重新打开了这个问题。