Pergunta

Preciso ler diferentes valores armazenados em um arquivo um por um. Então eu estava pensando que posso usar ifstream Para abrir o arquivo, mas como o arquivo é configurado de tal maneira que uma linha possa conter três números e a outra linha um número ou dois números, não tenho certeza de como ler cada número um por um. Eu estava pensando em usar stringstream Mas não tenho certeza se isso funcionaria.

O arquivo é um formato como este.

52500.00       64029.50      56000.00
65500.00       
53780.00       77300.00     
44000.50       80100.20      90000.00      41000.00    
60500.50       72000.00

Eu preciso ler cada número e armazená -lo em um vector.

Qual é o melhor jeito de concluir isso? Ler um número de cada vez, mesmo que cada linha contenha uma quantidade diferente de números?

Foi útil?

Solução

Por que não lê -los como números do arquivo?

double temp;
vector<double> vec;
ifstream myfile ("file.txt");

if (myfile.is_open()) {
  while ( myfile >> temp) {
    vec.push_back(temp);
  }
  myfile.close();
}

Outras dicas

Se você não se importa com a posição dos números que proponho usando istringStream depois Obter linha :

std::ifstream f("text.txt");
std::string line;
while (getline(f, line)) {
    std::istringstream iss(line);
    while(iss) {
        iss >> num1;
    }
}
vector<double> v;
ifstream input ("filename");
for (double n; input >> n;) {
  v.push_back(n);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top