Estou tentando aprender C ++ desde ontem e estou usando este documento: http://www.cplusplus.com/files/tutorial.pdf (página 32). Encontrei um código no documento e o executei. Tentei inserir Rs 5,5 para preço e um inteiro para quantidade e a saída foi 0. Tentei inserir 5,5 e 6 e a saída estava correta.
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price = 0;
int quantity = 0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
return 0;
}
Pergunta: O que exatamente o comando mystring faz? Citação do documento:
"Neste exemplo, adquirimos valores numéricos da entrada padrão indiretamente. Em vez de extrair valores numéricos diretamente da entrada padrão, obtemos linhas da entrada padrão (cin) em um objeto de string (mystr) e, em seguida, extraímos o inteiro valores desta string em uma variável do tipo int (quantidade). "
Minha impressão é que a função pegará a parte integrante de uma string e a usará como entrada.
(Não sei exatamente como fazer uma pergunta aqui. Também sou novo em programação) Obrigado.
stringstream
funciona. É bizarro, provavelmente até ruim =) Mas mostra que você pode tratar cordas como um riacho.
stringstream
, é definitivamente um exemplo errado. E mesmo que seja, deve ser escrito de forma diferente.
stringstream
usado assim. Eu geralmente carrego a linha, converto e extraio por partes, no entanto, isso obviamente tem pouca vantagem aqui porque jácin
é um fluxo de entrada ... Entãocin >> price >> quantity;
seria muito mais simples. Essa seria uma boa razão para NÃO usar os tutoriais do cplusplus.com.