Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串转换为double,然后在While循环中将其推送到向量 矢量数据; 字符串内容; 河流充填; infle.open(“test.txt”); while(getline(填充,内容“”) { atof(content.c_str()); 数据。推回(内容); } infle.close();_C++_String_Vector_Double - Fatal编程技术网

C++ 将字符串转换为double,然后在While循环中将其推送到向量 矢量数据; 字符串内容; 河流充填; infle.open(“test.txt”); while(getline(填充,内容“”) { atof(content.c_str()); 数据。推回(内容); } infle.close();

C++ 将字符串转换为double,然后在While循环中将其推送到向量 矢量数据; 字符串内容; 河流充填; infle.open(“test.txt”); while(getline(填充,内容“”) { atof(content.c_str()); 数据。推回(内容); } infle.close();,c++,string,vector,double,C++,String,Vector,Double,所以这里我从一个文本文件中提取字符串,并尝试将它们存储到一个向量中作为双精度。然而,我得到的错误是,它不能将“内容”推送到数据向量中,因为它不是双精度的。我尝试了一些方法,但得到了相同的一般错误,即内容没有转换为双精度。所以,我不确定我是否注意到了一个简单的错误,因为隧道视觉或者是否有其他我遗漏的东西。谢谢您的帮助。atof返回double,因此此行 vector<double> data; string content; ifstream infile; infile.open("

所以这里我从一个文本文件中提取字符串,并尝试将它们存储到一个向量中作为双精度。然而,我得到的错误是,它不能将“内容”推送到数据向量中,因为它不是双精度的。我尝试了一些方法,但得到了相同的一般错误,即内容没有转换为双精度。所以,我不确定我是否注意到了一个简单的错误,因为隧道视觉或者是否有其他我遗漏的东西。谢谢您的帮助。

atof
返回
double
,因此此行

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();
简单地丢弃结果。您可以这样做:

atof(content.c_str());
或者没有临时的

double tmp = atof(content.c_str());
data.push_back(tmp);
在C++中,将文件读入向量的惯用方法如下:

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

矢量数据{istream_迭代器(cin),istream_迭代器()};//C++11语法

C++98语法使用一对额外的圆括号来颠覆。您的代码不存储
atof
的返回值。你也可以只做
double d;虽然(infle>>d){..}
取决于您的库支持,但还有
std::stod
。您可以简单地使用
>
从流中直接读取双精度数据……或者只使用
ifstream infle(“test.txt”);矢量数据{istream_迭代器(infle),istream_迭代器()@JerryCoffin谢谢你的评论!就是这样,我忘记了我需要使用一个临时值,所以现在这才是问题所在。我真的很感谢你和其他人的帮助。
back_insert_iterator< vector<double> > back_it(data);
copy(istream_iterator<double>(infile)
,   istream_iterator<double>()
,   back_it);
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