Em C++ e Java podemos usar conversores e flags para formatar mensagens, já o C# não utiliza estes conversores então vamos criar métodos override para simular este recurso, para C# veja Composite Formatting logo abaixo. Visto que veremos o conceito de métodos mais adiante.
Tabela de Conversores C++
%d int mostra um número inteiro
%c char mostra um caracter
%f float ou double mostra um número decimal
%i int mostra um número inteiro
%ld long int mostra um número inteiro longo
%e float ou double mostra um número exponencial (número científico)
%E float ou double mostra um número exponencial (número científico)
%o int mostra um número inteiro em formato octal
%x int mostra um número inteiro em formato hexadecimal
%X int mostra um número inteiro em formato hexadecimal
%s char mostra uma cadeia de caracteres (string)
%n pula uma linha
%b boolean somente para JAVA, pois o C++ não retorna true or false e sim zero(0) e um(1) assim podemos utilizar %d.
Para C# veja:
Composite Format String: http://msdn.microsoft.com/en-us/library/txafckwd(v=vs.110).aspx
Exemplo:
Vamos utilizar o exemplo de código que usamos no post sobre “variáveis” para as linguagens respectivas
JAVA
public class Cad { public static void main(String[] args) { int codigo = 461012; String nome = "Mario Pereira Araujo"; Boolean ativo = true; Double salario = 1.556; System.out.format("O Conteudo de codigo é: %d%n", codigo); System.out.format("O Conteudo de nome é: %s%n", nome); System.out.format("O Conteudo de ativo é: %b%n", ativo); System.out.format("O Conteudo de ativo é: %4.3f%n", salario); } }
C++
#include "stdafx.h" #include <iostream> // habilita I/O entrrada e saída neste caso habilita o cout #include <string> // habilita a manipulação de strings usado no comando cout using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int codigo = 461012; char* nome = "Mario Pereira Araujo"; bool ativo = false; double salario = 1.556; printf ("Este e um int\t-> %d\n", codigo); printf ("Este e um char\t-> %s\n", nome); printf ("Este e um float\t-> %d\n", ativo); printf("Este e um float\t-> %4.3f\n", salario); system("pause"); return 0; }
C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { // Métodos Override sobreposição do método com a mesma entrada porem diferentes tipos // Simulamos deste modo linguagens como C++, Java, Python entre outras // C# possui seu próprio método para esta funcionalidade chamada Composite format string static void printf(string entrada, string conteudo) { string resultado = entrada.Replace("%s", conteudo); Console.WriteLine(resultado); } static void printf(string entrada, double conteudo) { string resultado = entrada.Replace("%f", Convert.ToString(conteudo)); Console.WriteLine(resultado); } static void printf(string entrada, int conteudo) { string resultado = entrada.Replace("%d", Convert.ToString(conteudo)); Console.WriteLine(resultado); } static void printf(string entrada, Boolean conteudo) { string resultado = entrada.Replace("%b", Convert.ToString(conteudo)); Console.WriteLine(resultado); } // void principal static void Main(string[] args) { int codigo = 461012; String nome = "Mario Pereira Araujo"; Boolean ativo = true; Double salario = 1.556; // Simula keyword C++ printf("Este e um int-> %d", codigo); printf("Este e um string-> %s", nome); printf("Este e um boolean-> %b", ativo); printf("Este e um double-> %f", salario); Console.ReadKey(); } } }
Boa tarde,
Tenho uma dúvida: Como eu uso máscaras de saída usando o comando COUT (padrão C++) e não o PRINFT (padrão ANSI C)?
Obrigado pela resposta, fique com Deus. (:
Olá existem outras versões do comando printf que são mais seguras e adequadas ao c++:
https://msdn.microsoft.com/pt-br/library/wc7014hz.aspx
Espero que tenha ajudado.
Obrigado por nos visitar
Boa noite,
Obrigado pelo link, mas vou tentar ser mais direto: Não há como usar o comando COUT?
Hugs, fique com Deus.
Boa noite,
Entendi, o COUT é somente saída de stream em C++ sem formatação em alguns projetos você pode utilizar as versões seguras do printf como por exemplo o printf_s e outras para utilizar formatação, o próprio compilador retorna aviso pra utilizar uma das versões seguras.
No entanto se quiser utilizar o COUT você pode utilizar a instrução FORMAT segue exemplos neste link:
https://msdn.microsoft.com/pt-br/library/hh438469.aspx
Obrigado pela visita.