C++ 如何使用fstream从文本编写一系列浮点

C++ 如何使用fstream从文本编写一系列浮点,c++,floating-point,operator-keyword,fstream,C++,Floating Point,Operator Keyword,Fstream,示例ABC.txt 10.f 30.2f 20.f 我想检索这些信息并存储在数组中。但是我不知道怎么做 我不明白这是什么 然后(如果好),它调用num_get::get(使用流的选定区域设置)来执行提取和解析操作,并相应地调整流的内部状态标志。最后,它会在返回前摧毁哨兵目标 std::fstream filestr("ABC.txt", std::fstream::in); if(!filestr.good()) //Logical error on i/o operation { //U

示例ABC.txt 10.f 30.2f 20.f

我想检索这些信息并存储在数组中。但是我不知道怎么做

我不明白这是什么 然后(如果好),它调用num_get::get(使用流的选定区域设置)来执行提取和解析操作,并相应地调整流的内部状态标志。最后,它会在返回前摧毁哨兵目标

std::fstream filestr("ABC.txt", std::fstream::in);

if(!filestr.good()) //Logical error on i/o operation
{
  //Unable to process
  filestr.close();
  return;
}

unsigned index= 0;
unsigned count= 0;


while(filestr.good())
{
  float buffer= 0.f;
  filestr >> std::skipws >> buffer;
  score[index]= buffer;
  ++index;
}
filestr.close();

超级简单的istream_迭代器。下面的代码中只有一个棘手的部分。向量构造函数调用在第一个参数周围需要一组额外的参数来避免错误

#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int
主(内部argc,字符**argv)
{                                                                                                                         
对于(inti=1;icerr有很多方法可以做到这一点。一种方法是结合向量和字符串使用stringstreams:

#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <vector>
using namespace std;

int main() {
    std::ifstream filestr("C:\\nums.txt", std::fstream::in);
    std::vector<double> numbers;

    if (!(filestr.good())) {
        std::cout << "BAD FILE" << std::endl;
        exit(0);
    }
    else {
        std::string temp;
        double d = 0.0;

        while(std::getline(filestr, temp)) {
        std::istringstream iss(temp);

        while(std::getline(iss, temp, ' ')) {
            std::istringstream ist(temp);

            ist >> f;
            numbers.push_back(f);
        }
    }
    }

    //see that the vector has information in it
    for (int i = 0; i < numbers.size(); i++) {
        std::cout << numbers[i] << std::endl;
    }
    filestr.close();

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
std::ifstream filestr(“C:\\nums.txt”,std::fsstream::in);
std::向量数;
如果(!(filestr.good()){
std::cout f;
数字。推回(f);
}
}
}
//请确保向量中包含信息
对于(int i=0;istd::cout您的文件是否在每个数字上都包含.f?您所需要的只是数字。此外,标准容器有一个迭代器对版本的构造函数和
assign
函数,它基本上执行您在这里执行的操作(从
unsigned index=0开始;
),但在一行中。您好,您的意思是标准容器有一个迭代器对版本的构造函数和赋值函数,它基本上执行您在这里所做的操作(从unsigned index=0;),但在一行中?刚刚发布的答案显示了我的意思。如果您已经创建了对象,还有一个
assign
函数。您好,谢谢,我将使用istream_迭代器方法。
#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <vector>
using namespace std;

int main() {
    std::ifstream filestr("C:\\nums.txt", std::fstream::in);
    std::vector<double> numbers;

    if (!(filestr.good())) {
        std::cout << "BAD FILE" << std::endl;
        exit(0);
    }
    else {
        std::string temp;
        double d = 0.0;

        while(std::getline(filestr, temp)) {
        std::istringstream iss(temp);

        while(std::getline(iss, temp, ' ')) {
            std::istringstream ist(temp);

            ist >> f;
            numbers.push_back(f);
        }
    }
    }

    //see that the vector has information in it
    for (int i = 0; i < numbers.size(); i++) {
        std::cout << numbers[i] << std::endl;
    }
    filestr.close();

    return 0;
}