String engabe als #define
-
String eingabe = KEYWORD;
denn in deinem<span title="makros sind böse">MAKRO</span>sind die anführungszeichen ja schon drin.
-
base_info.h
//*00000000000000000000000000000001 #define TITE_00000000000000000000000000000001 "Titel" #define NAME_00000000000000000000000000000001 "Musterman" #define DATA_00000000000000000000000000000001 "06.08.2005" #define INFO_00000000000000000000000000000001 "Text zum tiel \n"\ "Hier steht eine menge text zum titel blablabla.\n"\Die zuordung ist in meine code aber da.
Also ich hab eine datei.h
mit jede menge #definein im hauptprogramm hab ich
#include<iostream> #include<string> #include<fstream> #include"base_info.h" using namespace std; int main() { string buffer; string auslesen_TITE; string auslesen_NAME; string auslesen_DATA; string auslesen_INFO; ifstream file("base_info.h"); // datei auszulessen while(file.good()) { getline(file, buffer,'\n'); if(buffer.find("//*") != string::npos) { auslesen_TITE = "TITE_" + (buffer.substr(buffer.find('/')+3, (buffer.find('/')+3)+32)); auslesen_INFO = "INFO_" + (buffer.substr(buffer.find('/')+3, (buffer.find('/')+3)+32)); auslesen_NAME = "NAME_" + (buffer.substr(buffer.find('/')+3, (buffer.find('/')+3)+32)); auslesen_DATA = "DATA_" + (buffer.substr(buffer.find('/')+3, (buffer.find('/')+3)+32)); cout << auslesen_INFO; } } file.close(); }auslesen_INFO ist in der base_info.h #define.
-
Hi,
denk daran dass macros zur compilezeit ausgewertet bzw. ersetzt werden. Wenn dein program läuft kannst die nicht mehr zusammenbasteln weil der compiler die dann nicht sieht.
-
prolog schrieb:
Hi,
denk daran dass macros zur compilezeit ausgewertet bzw. ersetzt werden. Wenn dein program läuft kannst die nicht mehr zusammenbasteln weil der compiler die dann nicht sieht.
häää
kann ich jetzt den string nicht als magro ausgeben ??
-
Hi,
Du kannst den wert ausgeben. Vielleicht versteh ich dich auch falsch.
Für mich sieht es so aus als wolltest du die macros zur laufzeit zusammenbasteln also die namen der macros meine ich und dann erwarten dass du den wert der macros in einem string speichern kannst. Wenn dem nicht so ist, vergiss meinen
post.
-
ich weiss nicht was das soll, du definierts da
konstanten und wenn du auf sie zugreifen willst schliesst du sie in "" ein,
dann wird das auch so interpretiert als wenn das normaler text,
das heisst die auflösung des wertes deiner konstanten erfolgt erst gar nicht,
weil der compiler eben gar net weisst dass du den wert der konstanten abfragen willst
oder?
-
mit dem file code suche ich alle magross
die werden dan ausgegeben die
00000000000000000000000000000001
bis
99999999999999999999999999999999und dan hänge ich einfach das NAME_ oder TITE_ vornen dran.
aber dan habe ich z.b.
INFO_00000000000000000000000000000001 in einen string und will das in einen magro ausgeben.
-
Ja,
dann hab ich dich doch richtig verstanden. Geht so aber nicht weil macros zur compilezeit also in dem moment wo du dein program kompilierst ersetzt werden. Wenn dein programm läuft ist das schon alles passiert. Du musst das also anders lösen.
-
hatt da jemand eine idee?
Wie geht den sowas in cpp
das ist jetzt phparray(
"titel" => "000000000000000000000000001",
"titel2" => "000000000000000000000000002",
usw
)
-
std::mapstd::string,std::string code_table;
wobei der erste string den titel und der 2te den code enthät.
//edit
alternativ könntest du auch
nen std::set<std::pairstd::string,std::string > code_table; nehmen...
-
Hi,
das geht zum beispiel mit einer map.
#include <iostream> #include <string> #include <map> int main(){ std::map<std::string,std::string> m; m["foo"]="bar"; std::cout<<m["foo"]<<std::endl; }Ausgabe:
bar
So far ..
-
das was du da in php machst nennt sich wertzuweisung eines
assoziativen arrays, unter dem stichwort solltest du eigentlich
etwas finden können