Frage von BotMaster3000, 47

C++ simpler "Virus" erstellt mit seltsamen Resultat?

Hallo,

bitte nichts falsches Denken. Sollte nur zu Testzwecken sein.

Mit 33 Zeilen kann man denke ich keinen wirklichen Virus erstellen.. .

Der "Virus" soll eigentlich einfach nur ein Haufen Dateien erstellen, die eigentlich nur Mit Zahlen nummeriert werden sollen. Also 1 bis x.

Als ich den "Virus" dann aber in einem extra dafür angelegtem Ordner gestartet habe, haben sich zwar die Dateien erstellt, aber sie hatten alle komplett andere Namen und Endungen, als es eigentlich möglich sein sollte, meiner Meinung nach.

Ich schicke euch den Code hier einfach mal dazu, wenn ihr ihn aber ausführen wollt, dann erstellt am besten einen extra Ordner dafür, denn sonst kann es ziemlich lästig werden.. .

Meine Frage ist dabei jetzt: Wieso werden dort komplett andere namen verwendet und wie könnte ich das umändern, das es wirklich nummeriert wird?

#include "stdafx.h"
#include "iostream"
#include "string"
#include "iostream"
#include "fstream"


std::string makeString(int i)
{
    std::string filename = "" + 0 + i;
    return filename;
}

void createFile()
{
    
    for (long int i = 1; i <= 10000; ++i)
    {
        std::string filename = makeString(i);
        std::fstream file;
        file.open(filename, std::ios::out);
        file << filename;
        file.close();
    }
}



int main()
{
    createFile();
    return 0;
}

P.S: Von den 10000 Dateien, die erstellt werden sollten, werden meist nur 2/10tel davon überhaupt erstellt. Warum das eigentlich?

P.P.S: Ich hoffe diese Frage wird nicht gelöscht, denn es ist nur zu Testzwecken.. .

Antwort
von Mikkey, 27

Was soll ""+0+i sein? Das könnte z.B. die Zeichen(Byte)folge sein, die sich i Positionen nach der Konstanten "Leerstring" im Memory findet. Vermutlich gab es Namensüberschneidungen, so dass 8000 Deiner Dateien gleich wieder überschrieben wurden.

Es gibt Funktionen, die Zahlen in entsprechende Strings umwandeln können.

Kommentar von BotMaster3000 ,

Hallo,

also ich habe zuerst eben probiert bei den "" einen eigenen Namen einzugeben, sowas wie "Gotja" oder so und wo dann eben die Dateien "Gotja1", "Gotja2" ... generiert werden.

Aber selbst da kamen dann die Namen raus wie "string to long" oder "long long" oder abgehackte ähnliche Sachen, die ich mir nicht erklären konnte.. .

Deswegen habe ich das eben versucht umzuschreiben, aber da man keinen Int-Wert einfach so zu einem String hinzufügen kann, habe ich es eben so probiert.. . Die "0" hab ich vergessen wieder wegzunehmen, denn das hat auch nicht so geklappt.

Aber könnte das heißen, dass man so Namen von Dateien abfragen kann? Also mittels des Leerstrings?

MfG BotMaster3000

Kommentar von Mikkey ,

Das geht in C++ nicht auf diese Weise, ein Zahlenwert ist ein Zahlenwert und keine Zeichenfolge.

Hier sind Möglichkeiten, mit denen das möglich ist:

http://stackoverflow.com/questions/4668760/converting-an-int-to-stdstring

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten