int und string verbinden und in ein String herausgeben
-
habt Ihr vielleicht eine Lösung wie man es besser machen kann?
-
Ganz allgemein:
Statt print-Funktionen aus C zu neutzen sollte man C++-Streams benutzen:
#include <string> // std::string (Strings) #include <iostream> // std::cout, std::cin, std::cerr, ... (Standard-Ein-/Ausgabe) #include <fstream> // std::fstream, std::ifsream, std::ofstream,... (Datei-IO) #include <sstream> // std::stringstream ("Brücke zwischen Strings und Streams") int main(){ int zufahlszahl = 11; // reiner Zufall ;) // Begrüßung und Namen ermitteln: std::cout << "Hallo, bitte sagen Sie mir Ihren Namen: "; std::cout.flush(); std::string name; std::cin >> name; // personalisierte Glückszahlausgabe std::cout << "\nHallo " << name << "! Ihre Glückszahl ist heute die " << zufahlszahl << std::endl; // Dateiname erzeugen: int dateiIndex = 123; std::stringstream dateiName; dateiName << "Daten_" << dateiIndex << ".txt"; // Daten speichern (Name + Glückzahl in hex):: std::fstream logFile(dateiName.str().c_str(), std::ios::out | std::ios::app); logFile << "Benutername: " << name << " Glückszahl: " << std::hex << zufahlszahl << std::endl; return 0; }
-
Hallo Leute,
also ich habe jetzt auch mit dem Code probiert.
Aber mit diesem Code gebe ich nur ein string zusammen mit einem int in ein File.
Das ist ja nicht das Problem. Das habe ich geschaft.Aber wie schaffe ich es int und string in einen String zusammen zu fassen?
Das kann doch nicht so schwer sein!

Gruß Steve
-
swunder schrieb:
Aber wie schaffe ich es int und string in einen String zusammen zu fassen?
Was verstehst du denn unter "zusammenfassen", wenn dir keine der von Roger Wilco gezeigten Möglichkeiten zusagt? Tipp: Schau mal die Stelle mit
std::stringstreaman.
-
swunder schrieb:
Aber wie schaffe ich es int und string in einen String zusammen zu fassen?
Ich habs so geschafft:
#include <string> #include <sstream> int main() { std::string prefix; std::string RefDef1; int suffix; std::stringstream sstr; prefix = "Hallo"; suffix = 123; sstr << prefix << suffix; RefDef1 = sstr.str(); std::cout << "string version:" << RefDef1 << std::endl; RefDef1 = sstr.str().c_str(); std::cout << "char* version:" << RefDef1 << std::endl; std::cin.get(); return 0; }Oder ich versteh nicht genau, worum es hier geht...
Viel Glück noch, und ach ja, schau mal hier http://www.cplusplus.com/reference/iostream/stringstream/, die Seite solltest Du Dir auf jeden Fall in die Lesezeichen stecken

-
std::string + int = std::string:
rüdiger schrieb:
std::stringstream sstr; sstr << prefix << suffix; std::string result = sstr.str();prefix und suffix können dabei ein beliebiger Datentyp sein, für den der operator<< definiert ist (std::string, char*, int, long, float,...)
so auch:
std::string prefix = "Text"; int suffix = 1; std::stringstream sstr; sstr << prefix << suffix; std::string result = sstr.str(); // result == "Text1"
-
also es funktionier jetzt alles-
So wie ihr das vorgeschlgaen habt.
Bloss ich habe ein Problemstring prefix; int suffix; stringstream sstr; string RefDef[100]; int n=m_listComponent.size(); for(int i=0;i<n;i++){ prefix = m_pArrayPlistElem[i]->m_prefix; suffix = m_pArrayPlistElem[i]->m_suffix; sstr << prefix << suffix; RefDef[i] = sstr.str(); } for(int i=0;i<n;i++){ fprintf(fp,"%s\n",RefDef[i].c_str()); }Folgendes habe kriege ich in fp file
AND1
AND1IN1
AND1IN1IN2
AND1IN1IN2OR1
AND1IN1IN2OR1XOR1Erwartet habe ich aber
AND1
AND1
IN1
IN2
OR1
XOR1Was mache ich falsch? Oder muss ich immer die sstr Variable immer "löschen"?
Wenn ja wie mache ich es?
-
also es funktionier jetzt alles-
So wie ihr das vorgeschlgaen habt.
Bloss ich habe ein Problemstring prefix; int suffix; stringstream sstr; string RefDef[100]; int n=m_listComponent.size(); for(int i=0;i<n;i++){ prefix = m_pArrayPlistElem[i]->m_prefix; suffix = m_pArrayPlistElem[i]->m_suffix; sstr << prefix << suffix; RefDef[i] = sstr.str(); } for(int i=0;i<n;i++){ fprintf(fp,"%s\n",RefDef[i].c_str()); }Folgendes habe kriege ich in fp file
AND1
AND1IN1
AND1IN1IN2
AND1IN1IN2OR1
AND1IN1IN2OR1XOR1Erwartet habe ich aber
AND1
IN1
IN2
OR1
XOR1***Was mache ich falsch? Oder muss ich immer die sstr Variable immer "löschen"?
Wenn ja wie mache ich es?
-
sstr.str("");
-
Nexus schrieb:
sstr.str("");oder sstr erst in der schleife deklarieren.
// stringstream sstr; // string RefDef[100]; vector<string> RefDef; //#include <vector> int n=m_listComponent.size(); for(int i=0; i<n; i++){ string prefix = m_pArrayPlistElem[i]->m_prefix; int suffix = m_pArrayPlistElem[i]->m_suffix; stringstream sstr; sstr << prefix << suffix; // RefDef[i] = sstr.str(); RefDef.push_back(sstr.str()); } for(int i=0;i<n;i++){ // fprintf(fp,"%s\n",RefDef[i].c_str()); cout << RefDef[i] << endl; }also ohne den ganzen müll drin:
vector<string> RefDef; int n=m_listComponent.size(); for(int i=0; i<n; i++){ string prefix = m_pArrayPlistElem[i]->m_prefix; int suffix = m_pArrayPlistElem[i]->m_suffix; stringstream sstr; sstr << prefix << suffix; RefDef.push_back(sstr.str()); } for(int i=0;i<n;i++){ cout << RefDef[i] << endl; }das könnte(sollte) man jetzt noch in ein paar vielsagende Funktionen unterteilen...
falls du fragen zu vector hast, dann hier oder zur not kannste auch fragen
bb