gpt4 book ai didi

c++ - 使用 C++ 读取文本文件

转载 作者:行者123 更新时间:2023-11-28 03:08:21 25 4
gpt4 key购买 nike

我需要读取文本文件并将它们插入到 vector 中。我写了 vector<KeyPoint>到一个文本文件,如下所示:

vector<KeyPoint> kp_object;

std::fstream outputFile;
outputFile.open( "myFile.txt", std::ios::out ) ;
for( size_t ii = 0; ii < kp_object.size( ); ++ii ){
outputFile << kp_object[ii].pt.x << " " << kp_object[ii].pt.y <<std::endl;
}
outputFile.close( );

当我将 vector 写入文件时,它看起来像这样:

121.812 223.574   
157.073 106.449
119.817 172.674
112.32 102.002
214.021 133.875
147.584 132.68
180.764 107.279

每行以空格分隔。

但我无法读取它并将内容插入回 vector。以下代码在读取内容并将其插入 vector 时出错。

std::ifstream file("myFile.txt");
std::string str;
int i = 0;
while (std::getline(file, str))
{
istringstream iss(str);
vector<string> tokens;
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter<vector<string> >(tokens));

std::string fist = tokens.front();
std::string end = tokens.back();

double dfirst = ::atof(fist.c_str());
double dend = ::atof(end.c_str());

kp_object1[i].pt.x = dfirst;
kp_object1[i].pt.y = dend;

++i;
}

最佳答案

您没有具体说明您收到的错误是什么。我怀疑当您尝试将元素“插入”到您的 std::vector<KeyPoint> 中时会发生崩溃, 然而:

kp_object1[i].pt.x = dfirst;
kp_object1[i].pt.y = dend;

除非至少有 i + 1 kp_object1 中的元素这是行不通的。你可能想使用类似的东西

KeyPoint object;
object.pt.x = dfirst;
object.pt.y = dend;
kp_object1.push_back(object);

如果您的 KeyPoint有合适的构造函数,你也许可以使用

kp_object1.push_back(KeyPoint(dfirst, dend));

相反。

顺便说一句,我会像这样解码各个行:

KeyPoint object;
if (std::istringstream(str) >> object.pt.x >> object.pt.y) {
kp_object1.push_back(object);
}
else {
std::cerr << "ERROR: failed to decode line '" << line << '\n';
}

这似乎更具可读性,可能更有效,甚至添加了错误处理。

关于c++ - 使用 C++ 读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com