Espera -se que o leitor já saiba como usar o prompt de comando ou o terminal. Este artigo explica como ler personagens e strings do teclado e enviar caracteres e strings para o terminal (ou prompt de comando). Todo programador C ++ precisa saber neste artigo.
Para ter a entrada do teclado e saída para o terminal, o programa deve começar com:
#incluir
usando namespace std;
Conteúdo do artigo
Objetos de fluxo estreito do Iostream padrão
A classe iostream, os objetos padrão, Cout, CIN, Cerr e Toplog, foram instanciados e já na biblioteca padrão. O programador apenas os usa sem instantá -los novamente.
cout
A declaração a seguir na função Main () envia o texto: “Isso é saída.”Para o terminal:
cout << "This is output.";
Cout é um objeto iostream de saída na biblioteca padrão, já instanciada. << is the insertion operator, which sent the bytes, “This is output.” to the output stream object, cout. When the statement is executed, the text appears on the screen.
Com a declaração acima, o prompt de comando re-exibido aparece à direita da frase de saída. Não vai para a próxima linha. "ENDL" no final da declaração a seguir forçará o que for impresso pela tela para a próxima linha:
cout << "This is output." << endl;
"ENDL" é uma variável predefinida. O conteúdo da tela também pode ser forçado para a próxima linha com:
cout << "This is output." << '\n';
Com o uso de '\ n', todas as linhas de texto ainda podem não aparecer na tela imediatamente. "Endl" libera a linha completa de texto na tela.
Nota: Uma string enviada para cout está em citações duplas, enquanto um personagem enviado está em citações únicas. Uma série de cordas e chars pode ser enviada em uma declaração, cada uma precedida por << . All that will appear in one line at the output if '\n' is not in the series.
CIN
CIN é o objeto de entrada Iostream padrão, já instanciado e disponível na biblioteca padrão. Considere o seguinte segmento de código na função Main ():
char txt [50];
cout << "Enter a word and press Enter:" txt;
cout << txt << endl;
A primeira declaração declara uma matriz vazia de 50 caracteres. A segunda declaração instrui o usuário a digitar uma palavra na próxima linha de tela e pressionar a tecla Enter. Observe o uso de "endl" que força o usuário a inserir texto na próxima linha da tela. À medida que o usuário digita o texto, o texto inserido é ecoado na tela enquanto entra no objeto CIN. Depois de pressionar Enter, a terceira declaração no segmento de código é executada. Esta terceira declaração envia o texto inserido para a variável, txt. O texto inserido não deve ser superior a 50 caracteres neste caso. Observe o uso do operador de extração, >>. A última declaração exibe o texto inserido na tela.
CIN pode levar mais de uma palavra do teclado, separado por espaços. Essas palavras terão que ser extraídas para diferentes variáveis. O seguinte segmento de código ilustra o seguinte:
char txt [20];
int;
float ft;
cout << "Enter 3 values and press Enter:" txt >> it >> ft;
cout << txt << " << it << " << ft << endl;
Observe a declaração:
CIN >> txt >> it >> ft;
A primeira palavra é extraída para txt, a próxima e a última a ft. Se a entrada fosse,
um 25 3.6
então a saída pelo segmento de código seria,
um 25 3.6
Cerr
O programa a seguir tem um erro:
#incluir
usando namespace std;
int main ()
em myint;
retornar 0;
A primeira declaração em main () não está correta. Se o nome do arquivo com o código for “Temp.CC ”e o arquivo executável resultante deve ser chamado de“ temp ”, então o seguinte comando g ++ enviará a mensagem de erro do compilador para o arquivo,“ Erro.TXT":
G ++ -o Temper temperamento.CC 2> Erro.TXT
Se o arquivo “erro.txt ”não existe, seria criado. Observe a parte “2> erro.txt ”do comando g ++.
A tela é o destino de saída padrão e também é o destino de erro padrão. Se “2> erro.txt ”é omitido do comando g ++, a mensagem de erro do compilador seria enviada para o destino de erro padrão, que ainda é a tela (monitor).
O objeto de fluxo que representa o destino de saída padrão está cout. O objeto de fluxo que representa o destino de erro padrão é Cerr. Um erro de tempo de execução do programa pode ser enviado para a tela da seguinte forma:
Cerr << "The error message!" << '\n';
entupir
Um aplicativo leva diferentes entradas em momentos diferentes. Todas as entradas podem ser re-exibidas na tela. Todas as entradas podem ser salvas em um arquivo. Isso está registrando. O destino padrão de registro é a tela. O objeto padrão de fluxo de registro é um entupimento. O código a seguir será exibido novamente o texto de entrada para a tela:
char txt [50];
cout<<"Enter text and press Enter:"txt;
entupir<Se o texto de entrada for "input_text", o entupimento re-display "input_text" na tela.
Na prática, o registro geralmente é redirecionado para um arquivo. O programa a seguir ilustra o seguinte:
#incluir
usando namespace std;
int main ()
Freopen ("log.txt "," w ", stdout);
cout << "input_text" << endl;Observe o uso da função, Freopen () e seus argumentos. Seu primeiro argumento é o nome do arquivo de log. Se o arquivo não existir, seria criado. Seu segundo argumento é "W" para "Write". Seu terceiro argumento é stdout para saída padrão. A segunda instrução na função Main () usa o cout para enviar o texto de registro para o arquivo. Nota: O código de entrada real não foi mostrado neste programa.
Obtendo caracteres e cordas do teclado
Enquanto o usuário está digitando entrada, os caracteres são enviados para o buffer de fluxo de entrada e exibidos na tela. Quando o usuário pressiona a tecla Enter, todos os caracteres estão no buffer; Além disso, o cursor vai para o início da próxima linha abaixo, na tela. O programa continua até a próxima declaração do programa, após a declaração de leitura de entrada.
O objeto CIN possui métodos, com os quais esta seção se preocupa.
Lendo o primeiro personagem
get (char_type & c):
O segmento de código a seguir mostra como ler o primeiro caractere, a partir do buffer de fluxo de entrada:char ch;
cout << "Input text:" << endl;
CIN.obtenha (ch);
cout << ch << endl;A primeira declaração declara um personagem sem atribuição. A segunda declaração diz ao usuário para inserir um personagem. Quando o usuário digita o caractere e pressiona a tecla Enter, a terceira declaração copia o personagem do buffer de fluxo de entrada para a variável, CH.
Mesmo se o usuário digitar em mais de um caractere, o primeiro caractere seria levado pelo segmento de código.
pegar():
get () sem argumento, retorna o código ASCII decimal. Considere o seguinte segmento de código:cout << "Input text:" << endl;
cout << cin.get() << endl;Se a entrada for "ASDFG", então 97 será devolvido, que é o código ASCII decimal para 'a'.
get (char_type* s, streamsize n)
Depois que o usuário insere uma frase e pressiona a tecla Enter, vários caracteres que começam a partir do primeiro, podem ser extraídos do buffer de fluxo de CIN. O código a seguir pode ser usado:
Char Str [10];
cout << "Input text:" << endl;
CIN.obtenha (str, 10);
cout << str << endl;Se a entrada for "ótimas pessoas", então a saída será "ótima pessoa", de 9 caracteres e não 10. O caractere de string nu (\ 0) assume a décima posição no argumento de get. Então, para ter 9 caracteres no STR, seu tamanho de armazenamento deve ser de pelo menos 10, e o argumento get () deve ser 11. Se a linha de entrada inteira for desejada, o número de armazenamento de string deve ser pelo menos o número de caracteres digitados, mais 1. Portanto, se 12 caracteres forem digitados para toda a linha, o número deve ter 13 para o tamanho do armazenamento da string (str) e 13 para o argumento get (). Observe que um espaço é contado como um personagem.
get (char_type* s, streamsize n, char_type delim)
É possível extrair uma sub-string, delimitada à direita, pela primeira ocorrência de um personagem em particular, ou pelo fluxo da sub-string, que vem primeiro. Se o texto de entrada para o código a seguir for "ótimas pessoas", então "ótimo" será extraído:Char Str [30];
cout << "Input text:" << endl;
CIN.obtenha (str, 6, 'o');
cout << str << endl;A sexta posição desde o início é o caráter espacial e delimita a substring extraída exclusivamente. A sexta posição vem primeiro antes do único personagem, 'O'. Observe que o tamanho do armazenamento para STR pode ser o mais alto possível.
Se o texto de entrada para o código a seguir for "ótimas pessoas", "GR" será extraído:
Char Str [30];
cout << "Input text:" << endl;
CIN.obtenha (str, 10, 'e');
cout << str << endl;A primeira ocorrência de 'e' vem antes da décima posição.
Obtendo todos os personagens de uma linha
Depois de pressionar a tecla Enter, todos os caracteres digitados na linha podem ser obtidos como mostrado no código a seguir:
cout << "Input text:" << endl;
enquanto (1)
char ch = (char) CIN.pegar();
cout << ch;
if (ch == '\ n')
quebrar;O elenco com (char) converte cada número decimal no caractere ASCII correspondente.
olhadinha()
As funções get () membro não apenas leem o próximo personagem; eles removem do buffer de fluxo. No entanto, a função de membro do Peek () simples lê o próximo personagem (começando a partir do primeiro) sem removê -lo do buffer. No código a seguir, cada caractere é lido pela primeira vez com a função Peek () antes de ser removida, pela função get (). Tudo o que acontece depois que o usuário pressiona a tecla Enter:
cout << "Input text:" << endl;
enquanto (1)
char ch = (char) CIN.olhadinha();
cout << ch;
CIN.pegar();
if (ch == '\ n')
quebrar;Se os próximos caracteres não fossem removidos por get (), Peek () só estaria lendo o primeiro personagem, e o loop irá iterar indefinidamente.
Exibindo e excluindo caracteres antes de pressionar Enter
Observe que, com o objeto CIN, a tecla Enter deve ser pressionada antes que haja ação. Bem, é possível que os caracteres sejam exibidos ao serem digitados e apagados antes de pressionar a tecla Enter. No entanto, isso significa interface com o sistema operacional. Os sistemas operacionais diferem. Portanto, isso significa codificação diferente para diferentes sistemas operacionais. Portanto, este tópico merece um tutorial totalmente diferente - veja mais tarde.
Enviando caracteres e strings para o monitor
O objeto Cout é um objeto de fluxo de saída, já instanciado e presente na biblioteca padrão C ++. cout é o principal objeto usado no envio de caracteres e strings para o monitor. Isso é feito com o operador de inserção, << . With the cin object, the text is obtained line-by-line. With the cout object, the text is added onto the same line until '\n' or endl is encountered.
Expressões que resultam em escalares podem ser argumentos para o operador de inserção. O operador converte o escalar em texto e coloca o texto no fluxo de objetos cout. Quando o texto é enviado para o objeto Cout, normalmente aparece na tela (monitor). No entanto, ocasionalmente, pode não aparecer imediatamente. Para o texto forçado na tela, insira o valor especial, "endl", logo após a inserção do texto. Isso fará com que o texto seja lavado na tela, e uma nova linha será adicionada. Nota: '\ n' simplesmente adiciona uma nova linha, mas não libera texto na tela.
O programa a seguir mostra como imprimir os valores de INT, Float e texto comum, na tela:
#incluir
usando namespace std;
int main ()
int it = 5;
float ft = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
retornar 0;A saída é:
Os 5 itens custam $ 63.5 nós.O programa a seguir mostra como a sequência de um objeto instanciada de uma classe é impressa:
#incluir
usando namespace std;
struct st
char str [11] = "Algumas palavras";
obj;
int main ()
cout << obj.str << '\n';
retornar 0;A saída é "algumas palavras".
Argumentos para um programa C ++
A execução do programa começa a partir da função principal (). A função Main () realmente tem dois parâmetros opcionais. A sintaxe da função principal () com os parâmetros opcionais é:
int main (int argc, char *argv [argc])
retornar 0;Suponha que o nome do arquivo C ++ executável seja "temp". Suponha que os argumentos de que o programa precisa de seu ambiente (sistema operacional), digitado pelo usuário, é,
Artigos 3 Livro caneta "Big House"Existem 5 argumentos aqui: "Artigos", "3", "Book", "Pen" e "Big House"
Cada um é texto. Um argumento numerado para um programa é texto. Em outras palavras, cada argumento é uma string. "Big House" está em citações porque é uma frase. O comando do terminal para executar este programa seria:
./artigos temp 3 caneta de livro "Big House"Supondo que a temperatura do arquivo esteja no diretório doméstico. Observe que espaços e não vírgulas separam os argumentos.
Agora, na sintaxe da função main (), Argc é o número de argumentos para o programa, mais 1. Nesse caso, existem 5 argumentos para o programa. Então, Argc é 6. Na sintaxe, o argv [argc] é uma variedade de dicas para as cordas. O primeiro valor para esta matriz no argv [0] é dado pelo compilador. É um ponteiro para o nome do arquivo do programa. O restante dos valores são ponteiros para os argumentos do programa no pedido do usuário digitado em. O tamanho desta matriz é argc. Nesse caso, o tamanho é 1 + 5 = 6.
Suponha que, na compilação, o seguinte programa é nomeado Temp:
#incluir
usando namespace std;
int main (int argc, char ** argv)
cout << argv[0] << ", " << argv[1] <<
"," << argv[2] << ", " << argv[3] <<
"," << argv[4] << ", " << argv[5] << endl;
retornar 0;Observe aqui que a matriz "char*argv [argc]" foi declarada como "char ** argv".
Se este programa for executado com o comando do terminal,
./artigos temp 3 caneta de livro "Big House"Então a saída seria:
./temp, artigos, 3, livro, caneta, casa grandeObserve que o caminho do diretório foi incluído com o nome do arquivo executável.
Além disso, observe que, na execução do programa (chamando o programa), o valor para o ARGC não foi enviado.
Conclusão
A classe iostream tem quatro objetos importantes que são cout, CIN, Cerr e entupimento. CIN é um objeto de entrada, enquanto os demais são objetos de saída. Enquanto um programa está em execução, a entrada para o programa é diferente de quando o programa é começar a ser executado. Quando um programa começa a ser executado, a entrada do programa é unida ao comando para executar o programa, separado por espaços.