[C++] zeichen in Char Array ersetzen?

Fastkiller

Mitglied
hallo!

Ich bin noch relativ neu in C++, früher nur C# bzw Java gecodet..
Jetzt steh ich aber an.

Ich habe ein char array:
Code:
char buffer[256];
In dem steht folgendes:
C:/Programme/Java/test.txt

Wie kann ich nun alle '/' mit '\\' ersetzen?
Ich hab das bisjetzt versucht mit dem folgenden:

Code:
string str = buffer;
	str.replace(str.find('/'),str.length(),"\\");

Da ich das ganze in ner Messagebox ausgeben will müsste ich den string ja in LPCSTR umwandeln -.-

Mit C# gehts ja einfach aber bei C++ steh ich momental total an =(
C#:
Code:
String str = buffer.Replace("/", "\\");

Danke schonmal!

mfg,
Fastkiller
 
Moin,

ich weiß nicht, ob ich Deine Frage richtig verstanden habe, aber ein
Code:
str.c_str();
sollte den String in der gewünschten Form ausgeben!

Gruß
Klaus
 
Hi.

Die replace Methode von std::string müßtest du wiederholt ausführen, bis keine '/' Zeichen mehr im String enthalten sind.

Verwende lieber die std::replace Funktion:
C++:
#include <algorithm>
#include <cstring>

std::replace(buffer, buffer + ::strlen(buffer), '/', '\\');
Gruß
 
Hi.

Die replace Methode von std::string müßtest du wiederholt ausführen, bis keine '/' Zeichen mehr im String enthalten sind.

Verwende lieber die std::replace Funktion:
C++:
#include <algorithm>
#include <cstring>

std::replace(buffer, buffer + ::strlen(buffer), '/', '\\');
Gruß

Danke erstmal, allerdings bringt mir das nichts.
Die Ausgabe sieht dann folgendermaßen aus:
Code:
C:\Programme\java\test.txt
sie sollte aber so aussehen:
Code:
C:\\Programme\\java\\test.txt

Nur wie mach ich das? Hier mein Ansatz:
C++:
	for(int i = 0; i<sizeof(buffer);i++)
	{
		if(buffer[i] == '/')
		{
			buffer[i] = '\\';
		}
	}
	return buffer;
Dies führt zu folgender Ausgabe:
Code:
C:\Programme\java\test.txt
Wie kann ich allerdings nun ein Character nach jedem
einfügen?
_________________________________________________________________________

EDIT: Hab das jetzt folgendermaßen gelöst:

C++:
char buffer[256]; 
static char buffer2[256];
for(int i = 0,y = 0; i<lstrlenA(buffer);i++,y++)
		{
			if(buffer[i] == '/')
			{
				buffer2[y]='\\';
				y++;
				buffer2[y]='\\';
			}
			else
			{
				buffer2[y]=buffer[i];
			}
		}
		return buffer2;

mfg,
Fastkiller
 
Zuletzt bearbeitet:
Danke erstmal, allerdings bringt mir das nichts.
Die Ausgabe sieht dann folgendermaßen aus:
Code:
C:\Programme\java\test.txt
sie sollte aber so aussehen:
Code:
C:\\Programme\\java\\test.txt
Du solltest lernen deine Anforderungen klar und eindeutig zu formulieren. Wozu soll das ganze denn eigentlich gut sein? Du weißt schon das du unter Windows auch einfach '/' als Verzeichnisseparator verwenden kannst?
Nur wie mach ich das?
In C++:
C++:
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <sstream>

#include <cstring>

using namespace std;

string slash2doublebackslash(char c) {
  if (c == '/')
    return "\\\\";
  else 
    return string(1, c);
}

char buf[] = "c:/path/to/program/test.exe";
ostringstream r;

transform(buf, buf + ::strlen(buf), ostream_iterator<string>(r), slash2doublebackslash);

cout << r.str() << endl;
Gruß
 
Zurück