C++ if'in içinde değişken belirlenmiyor

abinizjoe3113

Hectopat
Katılım
13 Mart 2021
Mesajlar
94
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
#include <iostream>
#include <typeinfo>

using namespace std;

void getType(int a) {
if (typeid(a).name() == "i") {
string strType = "int";
}
cout >> strType;
}




int main()
{
int name = 5;
getType(name);
}

Kodum bu fakat strType'i yazdiramiyorum.Yardim edin lütfen.
 
For döngüsünü öğrendin mi?
 
Block Scope içerisinde tanımlanan değişkenler tanımlandığı bloğun dışında tanımsızdır. Eğer dışarıda da kullanmak istiyorsanız if bloğun içerinde değil function bloğu içerisinde tanımlayın.
 
Değişken tanımlamanı koşulun dışında yap. If içinde tanımladığın değişken dışarda tanınmaz. Once if'in üstünde string strType=" " şeklinde tanımla. Sonra if içinde strType="int"; diye atamanı yap.
 
void getType(int a) {

/* Variables: */
string varType = " ";

if (typeid(a).name() == "i") {

varType = "int";
}

cout << varType;

}

Kodumu böyle yaptım fakat cout kısmında hala hiçbir yazı bana geri dönmüyor.
 
Öncelikle cout öyle kullanılmaz. Insertion operatörünü kullanman gerekir.
Sonrasında scope'lara çalışman lazım.

Programın amacını anlamadım. typeid.name zaten sana const char* veriyor. Daha niye std::string ile uğraşıyorsun?
Çalışan hali bu şekilde ama int yerine i ile kıyasladığın için bir şey yazdırmıyor.

Son anda kod paylaşmışsın mesajı göndermeden görmemiştim. Boş bir şekilde std::string'i ilklendirme. Gereksiz performans kaybından başka bir şey değil.
endl kullanmanı tavsiye ederim.
Hiçbir şey yazdırmama sebebinin if içinde i ile kıyaslaman olduğunu tekrar belirtip görmen için de etiketlemiş olayım. Döndürdüğü şey bir pointer. Pointer'lar adrestir. Senin kendi oluşturduğun tırnak içindeki şeyin adresi ile diğerinin adresi farklı. İçi aynı olsa da ürün farklı. Bu yüzden ikisini de std::string yapıp kıyaslamak şu an senin için en rahatı olacaktır. Kaldı ki direkt paylaşacağım ikinci koddaki gibi yapmak bence daha rahat.
@abinizjoe3113

Kod:
#include <iostream>
#include <string>
#include <typeinfo>

using namespace std;

void getType(int a) {
    string strType;

    if (typeid(a).name() == "i") {
        strType = "int";
    }

    cout << strType << endl;
}

int main() {
    int name = 5;
    getType(name);
}
Kod:
#include <iostream>
#include <string>
#include <typeinfo>

using namespace std;

void getType(int a) {
    string strType = typeid(a).name();
    cout << strType << endl;
}

int main() {
    int name = 5;
    getType(name);
}
 
Son düzenleme:
Teşekkür ederim, uygulamanın aslında asıl amacı typeid() kodunu uzatmak mesela

int a=5;

cout << typeid(a).name() << endl;

Çıktı: i
i --> int'in kısaltması bende bunu geliştirmek istedim ve

getType() adlı bir fonksiyon oluşturdum, fonksiyona bir değişken aldığında typeid(değişken).name() onun değişken türünü bulutor mesela i olsun bende bunu uzatarak int diye yazdırmya çalıştım.
 
Bende typeid(intdeğisken).name() yaptığımda
çıktı: i
olarak kalıyor maalesef
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…