C++ string hatası

onurlexa

Decapat
Katılım
4 Haziran 2021
Mesajlar
70
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
İyi günler arkadaşlar. C++ üzerinde yazmış olduğum kodda string hatası alıyorum yardımcı olan arkadaşlara şimdiden teşekkür ederim.
1 - using namespace std; kullandım.
2 - using std: String; kullandım. Fakat olmadı ikisinde de

Hata : ad alanı "std", "string" üyesine sahip değil.

C++:
#include "global.h"
#include <iostream>

using namespace std;

DWORD GetGamePID() {
 HWND hwGame = FindWindowA(0, "Counter-Strike: Global Offensive");
 if (!hwGame) return 0;
 DWORD ret = 0;
 GetWindowThreadProcessId(hwGame, &ret);
 return ret;
}

std::string Lpcwstr25tring(LPCWSTR lps) {
 int len = WideCharToMultiByte(CP_ACP, 0, lps, -1, NULL, 0, NULL, NULL);
 if (len <= 0) {
 return "";
 }
 else {
 char* dest = new char[len];
 WideCharToMultiByte(CP_ACP, 0, lps, -1, dest, len, NULL, NULL);
 dest[len - 1] = 0;
 std::string str(dest);
 delete[] dest;
 return str;
 }
}
 
Son düzenleme:
İyi günler arkadaşlar. C++ üzerinde yazmış olduğum kodda string hatası alıyorum yardımcı olan arkadaşlara şimdiden teşekkür ederim.
1 - using namespace std; kullandım.
2 - using std: String; kullandım. Fakat olmadı ikisinde de

Hata : ad alanı "std", "string" üyesine sahip değil.

C++:
#include "global.h"
#include <iostream>

using namespace std;

DWORD GetGamePID() {
 HWND hwGame = FindWindowA(0, "Counter-Strike: Global Offensive");
 if (!hwGame) return 0;
 DWORD ret = 0;
 GetWindowThreadProcessId(hwGame, &ret);
 return ret;
}

std::string Lpcwstr25tring(LPCWSTR lps) {
 int len = WideCharToMultiByte(CP_ACP, 0, lps, -1, NULL, 0, NULL, NULL);
 if (len <= 0) {
 return "";
 }
 else {
 char* dest = new char[len];
 WideCharToMultiByte(CP_ACP, 0, lps, -1, dest, len, NULL, NULL);
 dest[len - 1] = 0;
 std::string str(dest);
 delete[] dest;
 return str;
 }
}
cstring kütüphanesini falan importlamanız lazım. String data type’ı C dillerinde default olarak yok.
 
std alan adını kullandığını zaten söylemişsin compiler'a. Üstüne bir daha string oluşturacağın zaman neden std:: ekliyorsun? Her ihtimale karşı #include <string> ekler misin?

cstring kütüphanesini falan importlamanız lazım. String data type’ı C dillerinde default olarak yok.
std alan adına dahil string sınıfı normalde. cstring libe gerek yok. cstring lib, char array işlemlerini yönetir. string sınıfı doğrudan char array'den oluşturulmuş bir sınıf. Kendi kontrol fonksiyonlarına sahip.
 
std alan adını kullandığını zaten söylemişsin compiler'a. Üstüne bir daha string oluşturacağın zaman neden std:: ekliyorsun? Her ihtimale karşı #include <string> ekler misin?


std alan adına dahil string sınıfı normalde. cstring libe gerek yok. cstring lib, char array işlemlerini yönetir. string sınıfı doğrudan char array'den oluşturulmuş bir sınıf. Kendi kontrol fonksiyonlarına sahip.
Kullandığı compiler’a göre değişiyor. Biz C++ yazdığımız zamanlarda local bilgisayarımızda çalışan kodlar, okulun sunucusunda çalışmıyordu. String problemi de çok yaşıyorduk.
 
Kullandığı compiler’a göre değişiyor. Biz C++ yazdığımız zamanlarda local bilgisayarımızda çalışan kodlar, okulun sunucusunda çalışmıyordu. String problemi de çok yaşıyorduk.
cstring bir çözüm değil. cstring, string diye bir sınıfa sahip değil. C++, basic_string diye bir sınıfa sahip std alan adı altında (typedef ile sınıfa olan çağrı basic_string değil, string olarak kullanılabiliyor). Compilerların çoğunda C++ ile birlikte gelen temel özellikler herhangi bir importa ihtiyaç duymadan çalışıyor, dolayısıyla tek yapman gereken alan std'yi çağırmak.* Eğer compilerın bu özelliğe sahip değilse <string> eklersin, <cstring> değil.

*: Başlık dosyası <iostream> eklenmek zorunda. İçerisinde diğer başlık dosyalarına referans var, ayrıca girdi/çıktıları tanımlayan başlık dosyası. Bu dosyadaki fonksiyonların neredeyse tamamı alan adı std'nin altında. Kullanmak için alan adı std'yi kullanmalısınız.
 
Son düzenleme:
cstring bir çözüm değil. cstring, string diye bir sınıfa sahip değil. C++, basic_string diye bir sınıfa sahip std alan adı altında (typedef ile sınıfa olan çağrı basic_string değil, string olarak kullanılabiliyor). Compilerların çoğunda C++ ile birlikte gelen temel özellikler herhangi bir importa ihtiyaç duymadan çalışıyor, dolayısıyla tek yapman gereken alan std'yi çağırmak. Eğer compilerın bu özelliğe sahipse <string> eklersin, <cstring> değil.
Cstring benim eski alışkanlıktan ötürü olsa gerek. Uzun süredir de C/Cpp yazmıyorum zaten. Siz eminseniz bir sıkıntı yok :).
 
std alan adını kullandığını zaten söylemişsin compiler'a. Üstüne bir daha string oluşturacağın zaman neden std:: ekliyorsun? Her ihtimale karşı #include <string> ekler misin?


std alan adına dahil string sınıfı normalde. cstring libe gerek yok. cstring lib, char array işlemlerini yönetir. string sınıfı doğrudan char array'den oluşturulmuş bir sınıf. Kendi kontrol fonksiyonlarına sahip.
Onu da yapmıştım hocam, aynı hatayı almıştım.
 
Header:

C++:
#include <Windows.h>
#include <iostream>
#include <string>

namespace Bypass {
 void SetGamepid(DWORD pid);
 BOOL Bypass_CSGO();
 BOOL RestoreCSGO();
}

Main (Yarım):

#İnclude "global.h"
#İnclude <iOStream>

#İnclude <string>

Using namespace std;
Using std: String;

DWORD GetGamePID() {
HWND hwGame = FindWindowA(0, " Counter-Strike: Global Offensive");
İf (!hwGame) return 0;
DWORD ret = 0;
GetWindowThreadProcessId(hwGame, &ret);
Return ret;
}

Std: String LpcwsTR25TRINg(LPCWSTR lps) {
İnt len = WideCharToMultiByte(CP_ACP, 0, lps, -1, NULL, 0, NULL, NULL);
İf (len <= 0) {
Return "";
}
Else {
Char* dest = New char[len];
WideCharToMultiByte(CP_ACP, 0, lps, -1, dest, len, NULL, NULL);
Dest[len - 1] = 0;
Std: String str(dest);
Delete[] dest;
Return str;
}
}

(std::string eski hocam)
 

Yeni konular

Geri
Yukarı