procure por linha específica guia c++ delimitada
-
12-12-2019 - |
Pergunta
Valor do tipo AccountNumber
15 verificando 52,42
23 economias 51,51
11 verificando 12.21
é meu arquivo delimitado por guia
gostaria de poder pesquisar linhas pelo número da conta.digamos que se eu colocar 23, quero obter aquela linha específica.como eu faria isso?
também mais adiantado, se eu quisesse alterar um valor específico, digamos o valor 51,51 na conta 23.como faço para buscar esse valor e substituí-lo por um novo valor?
até agora estou apenas lendo linha por linha
linha de corda;ifstream is("conta.txt");
if (is.is_open())
{
while (std::getline(is, line)) // read one line at a time
{
string value;
string parseline;
std::istringstream iss(line);
getline(line, parseline);
cout << parseline << endl; // do something with the value
while (iss >> value) // read one value at at time from the line
{
//cout << line << " "; // do something with the value
}
}
is.close();
}
else
cout << "File cant be opened" << endl;
return 0;
Solução
Dado que cada linha tem comprimento variável, não há como indexar uma linha específica sem primeiro analisar o arquivo inteiro.
Mas suspeito que seu programa desejará manipular linhas e colunas aleatórias.Então, eu começaria analisando o arquivo inteiro.Coloque cada linha em sua própria estrutura de dados em uma matriz e indexe essa linha na matriz.
Você pode usar "strtok" para dividir a entrada em linhas e, em seguida, strtok novamente para dividir cada linha em campos.
Outras dicas
Se eu fizesse isso, primeiro escreveria algumas funções que analisam o arquivo inteiro e armazenam os dados em uma estrutura de dados apropriada (como um array ou std::map).Então eu usaria a estrutura de dados para as operações necessárias (como pesquisa ou edição).Finalmente, eu escreveria a estrutura de dados de volta em um arquivo se houvesse alguma modificação.