gpt4 book ai didi

c++ - 将字符串转换为 double ,然后将其插入 While 循环中的 vector

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:52 25 4
gpt4 key购买 nike

vector<double> data;
string content;
ifstream infile;
infile.open("test.txt");
while(getline(infile, content, ' '))
{
atof(content.c_str());
data.push_back(content);
}
infile.close();

所以我在这里从一个文本文件中获取字符串,并尝试将它们作为 double 值存储到一个 vector 中。但是我得到的错误是它不能将“内容”推送到数据 vector 中,因为它不是 double 的。我已经尝试了一些事情并得到了相同的一般错误,内容没有被转换为 double 。所以我不确定我是否没有注意到一个简单的错误,因为隧道视野或者我是否遗漏了其他东西。感谢您的帮助。

最佳答案

atof 返回 double,所以这一行

atof(content.c_str());

简单地丢弃结果。你可以这样做:

double tmp = atof(content.c_str());
data.push_back(tmp);

或没有临时的

data.push_back(atof(content.c_str()));

在 C++ 中将文件读入 vector 的惯用方法如下:

back_insert_iterator< vector<double> > back_it(data);
copy(istream_iterator<double>(infile)
, istream_iterator<double>()
, back_it);

这使用 std::copy 函数以及输入迭代器和推回迭代器来隐藏循环。当您可以将 vector 声明和从文件中读取结合起来时,您可以进一步缩短它:

vector<double> data(istream_iterator<double>(cin), (istream_iterator<double>())); // C++98 syntax

vector<double> data { istream_iterator<double>(cin), istream_iterator<double>() }; // C++11 syntax

C++98 语法使用一对额外的括号来颠覆 most vexing parse .

关于c++ - 将字符串转换为 double ,然后将其插入 While 循环中的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26351103/

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