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

abinizjoe3113

Hectopat
Katılım
13 Mart 2021
Mesajlar
93
Çö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.
 
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.
 
Tamam da i diye bulmuyor ki. Siz kötü bir şeyler kullanıyorsunuz belli ki. Kullandığınız kötü şey const char* gelince sadece ilk karakteri yazdırıyor anlaşılan.

Güncel standart kullanın. MSVC dışındaki derleyicilerin bunu akıl edemeyecek kadar kötü olduklarını sanmıyorum.
 
Tamam da i diye bulmuyor ki. Siz kötü bir şeyler kullanıyorsunuz belli ki. Kullandığınız kötü şey const char* gelince sadece ilk karakteri yazdırıyor anlaşılan.

Güncel standart kullanın. MSVC dışındaki derleyicilerin bunu akıl edemeyecek kadar kötü olduklarını sanmıyorum.
Bende typeid(intdeğisken).name() yaptığımda
çıktı: i
olarak kalıyor maalesef
 

Yeni konular

Geri
Yukarı