Logo Hardware.com.br
gabriellbsb
gabriellbsb Membro Senior Registrado
270 Mensagens 0 Curtidas

Algumas dúvidas bestas sobre C++

#1 Por gabriellbsb 16/03/2005 - 18:41
Pessoal, eu estou com algumas dúvidas sobre C++ e gostaria que por favor vcs me ajudassem
Grato

1°- Lendo 2 tutoriais diferentes observei que um utiliza o "cout" para retornar textos e outro "printf" qual a diferença entre eles? Qual seria melhor eu utilizar?

2°- Como eu coloco acento nos meus textos?

3°- Como eu faço para armazenar um char em uma variável? scanf("%c",variavel);? Se for não está dando certo, só funciona com o número referente a letra na tabela ASCII

4°- Como eu faço para verificar char em um switch? "a" ? a? ou o número referente na tabela ASCII? (no caso 97)

5°- Pq preciso colocar "&" antes da variavel no scanf?

6°- Eu estou com um monte de tutoriais sobre C e C++, qual a diferença entre eles? Eu gostaria se aprender C++ pelo fato de ser uma programação voltada a objetos. Mas há alguma diferença nos tutoriais sem contar este ponto? Vc tem algum para me indicar?

7°- Qnd tento setar uma variável do tipo string aparece o seguinte erro:
6 C:teste.cpp `string' undeclared (first use this function) 


Desculpa pela qnt de perguntas, mas achei melhor perguntar tudo de uma vez.
Creio estas sejam dúvidas faceis de serem respondidas smile.png

Obrigado pela atenção smile.png

Abraço, Gabriel
kao00
kao00 Zerinho Registrado
352 Mensagens 1 Curtida
#2 Por kao00
16/03/2005 - 19:08
1 - cout é C++, printf é C. Se vc está programando em C++, use cout.

2 - Tente usar variáveis do tipo wchar_t.

3 -

char a;
scanf("%c", &a);


ou

char a;
a = getchar();


4 - 'a'

5 - pq a função scanf recebe pointers como argumentos. Vc só precisa usar o operador & para int e char. Com strings, o primeiro caractere já é o pointer então vc não precisa do &

6 - Procura aqui no fórum que já teve muitas falações sobre isso :P
gabriellbsb
gabriellbsb Membro Senior Registrado
270 Mensagens 0 Curtidas
#3 Por gabriellbsb
16/03/2005 - 19:29
kao00, Muito Obrigado pelas respostas!!! Valeu msm smile.png
Só o lance do wchar_t que não entendi, devo setar a variavel como wchar_T? wchar_t a = "é"; isso?

Mais uma coisinha :wink:

Qnd tento setar uma variável do tipo string aparece o seguinte erro:
6 C:teste.cpp `string' undeclared (first use this function) 



Obrigado novamente pelas respostas big_green.png

Abraço e valeu pela atenção

:mrgreen:
Burro é aquele que não sabe e não quer aprender.... :\
jackinabox
jackinabox Veterano Registrado
1.1K Mensagens 8 Curtidas
#4 Por jackinabox
16/03/2005 - 22:47
gabriellbsb
7°- Qnd tento setar uma variável do tipo string aparece o seguinte erro:

6 C:teste.cpp `string' undeclared (first use this function)



Esse erro ocorre porque o ISO/ANSI C++ requer que sejam especificados os namespaces das funções das bibliotecas padrão. Há 3 soluções:

1. Através do uso do namespace std "inline":

#include <string>

int main()
{
std::string s = "abc";
}


2. Através de uma diretiva using:

#include <string>

using namespace std;

int main()
{
string s = "abc";
}


3. Através de uma declaração using:

#include <string>

using std::string;

int main()
{
string s = "abc";
}
Jeferson Charles Mayer

"Como é que eu vou enxergar a tal floresta, com todas essas árvores atrapalhando a visão?"
jackinabox
jackinabox Veterano Registrado
1.1K Mensagens 8 Curtidas
#6 Por jackinabox
17/03/2005 - 13:25
gabriellbsb
Eu estou utilizando a 3° maneira pois acho q polpa "esforços" posteriores heheh
Mas alguma das maneiras citadas pode ser conciderada mais "elegante?" ...

Mais elegante, eu não diria.

O que poderia ocorrer, sob certas circunstâncias, seria um conflito de namespaces. Se existir uma classe string no namespace std e outra classe string em outro namespace (criado por você, por exemplo), e você estiver usando ambas as classes no mesmo arquivo fonte, então haverá conflito de namespaces, pois "string" pode ser tanto uma referência a std::string quanto a seunamespace::string.

Portanto, a forma que evita totalmente esses conflitos de namespace é a forma 1:


// assim não há dúvida de quem é quem:
std::string str1;
seunamespace::string str2;


Você está utilizando a forma 3 para poupar esforços posteriores, mas pouparia mais ainda com a forma 2 (diretiva using).

Observe que a forma 3 declara que está utilizando apenas a classe std::string. Se você for utilizar a classe std::cout, por exemplo, vai precisar acrescentar mais uma declaração using para o cout. Portanto, a forma 2 pode ser mais "econômica".


#include <string>
#include <iostream>

using namespace std;

int main()
{
string str = "Olá!";
cout << str;
}
Jeferson Charles Mayer

"Como é que eu vou enxergar a tal floresta, com todas essas árvores atrapalhando a visão?"
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal