/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
string to AnsiString, Borland C++
Fra : CJ16
Vist : 1523 gange
50 point
Dato : 15-08-04 17:41

Hej alle

Hvordan kan man konvertere string (include <string>) til AnsiString i Borland C++? Jeg har prøvet at åbne en fil, som jeg vil vise indholdet af i en Memobox, men får følgende fejl meddelelse, når jeg prøver at kompilerer programmet:
[C++ Error] Editor.cpp(31): E2034 Cannot convert 'string' to 'AnsiString'

Koden jeg har brugt er:
fstream file;
string test;

file.open("data.dat", ios::app);
file >> test;
Memo1->Text = test;
file.close();

Venlig hilsen
Claus Jørgensen

 
 
Kommentar
Fra : BertelBrander


Dato : 15-08-04 17:51

Jeg er ikke ekspert i Borlands "AnsiString", men du kunne prøve at konverter std::string'en til en const char *, så tror jeg kompileren kan finde ud af at konvertere den til en AnisString:

Memo1->Text = test.c_str();

Kommentar
Fra : CJ16


Dato : 15-08-04 18:33

Det har jeg desværre forsøgt, men det virker ikke. Der kommer ingen fejl meddelelse, men der bliver ikke skrevet noget ud i min memobox. Hvis jeg bruger et array af char, så virker det, men hvis der er flere linjer i filen, så er det kun den sidste der bliver vist i memoboxen:

const int MAXLENGTH = 21;
const int MAXCHARS = 31;

char filename[MAXLENGTH] = "data.dat";
char descrip[MAXCHARS];
int ch;
ifstream file;

file.open(filename, ios::nocreate);

if (file.fail())
Label1->Caption = "Could not be opened";

//file.seekg(1L, ios::cur);

while((ch = file.peek()) != EOF) {
file >> descrip;
Memo1->Text = descrip;
}

file.close();

Accepteret svar
Fra : BertelBrander

Modtaget 50 point
Dato : 15-08-04 20:07

Følgende ser ud til at virke:

Memo1->Lines->Clear();
std::ifstream file;
std::string s;
file.open("C:\\bkb.txt", std::ios::nocreate);
while(std::getline(file, s))
Memo1->Lines->Add(s.c_str());

Jeg har brugt getline isf >> for mine linier indeholder mellemrum

Godkendelse af svar
Fra : CJ16


Dato : 15-08-04 20:18

Tak for svaret BertelBrander.
                        

Kommentar
Fra : CJ16


Dato : 15-08-04 20:27

Har du fået dine point? Jeg synes ikke der er blevet trukket i mine point..

Kommentar
Fra : emesen


Dato : 15-08-04 20:55

CJ16 > Dine point trækkes når du stiller spørgsmålet, og er låst/brugt så snart der kommenteres.

Kommentar
Fra : BertelBrander


Dato : 15-08-04 20:57

Det ved jeg ikke, jeg er ikke "superbruger" så "mine" point forsvinder ud i den blå luft.

Jeg må vist overveje at blive superbruger en dag...

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste