Leia várias cordas de um arquivo c ++
-
26-09-2019 - |
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?
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);
}