Wie String anlegen unter Visual Studio 2008 C++?

Gast #1435211
Lesenswert?

Ich möchte mit Microsoft Visual Studio C++ 2008 ein kleines Programm 
schreiben, mit dem ich zum Beispiel alle Verzeichnissnamen von meiner 
Musiksammlung in eine Textdatei abspeichern kann. Ich weiss zunächst gar 
nicht wie ich dort einen string anlegen kann.
1
string dir="c:\\";

Da mekert der Compiler. Verstehe das nicht.
Gast #1435219
Lesenswert?

Fehlermeldung:

Kompilieren...
ReadFolder.cpp
d:\informatik\visual_studio\c++\readfolder\readfolder\readfolder\Form1.h 
(87)  : error C2065: 'string': nichtdeklarierter Bezeichner
d:\informatik\visual_studio\c++\readfolder\readfolder\readfolder\Form1.h 
(87)  : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'dir'
d:\informatik\visual_studio\c++\readfolder\readfolder\readfolder\Form1.h 
(87)  : error C2065: 'dir': nichtdeklarierter Bezeichner

Programmcode:
1
#pragma once
2

3

4
namespace ReadFolder {
5

6
  using namespace System;
7
  using namespace System::ComponentModel;
8
  using namespace System::Collections;
9
  using namespace System::Windows::Forms;
10
  using namespace System::Data;
11
  using namespace System::Drawing;
12

13
  /// <summary>
14
  /// Zusammenfassung für Form1
15
  ///
16
  /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
17
  ///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
18
  ///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
19
  ///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
20
  ///          arbeiten, die diesem Formular zugewiesen sind.
21
  /// </summary>
22
  public ref class Form1 : public System::Windows::Forms::Form
23
  {
24
  public:
25
    Form1(void)
26
    {
27
      InitializeComponent();
28
      //
29
      //TODO: Konstruktorcode hier hinzufügen.
30
      //
31
    }
32

33
  protected:
34
    /// <summary>
35
    /// Verwendete Ressourcen bereinigen.
36
    /// </summary>
37
    ~Form1()
38
    {
39
      if (components)
40
      {
41
        delete components;
42
      }
43
    }
44
  private: System::Windows::Forms::Button^  button1;
45
  protected: 
46

47
  private:
48
    /// <summary>
49
    /// Erforderliche Designervariable.
50
    /// </summary>
51
    System::ComponentModel::Container ^components;
52

53
#pragma region Windows Form Designer generated code
54
    /// <summary>
55
    /// Erforderliche Methode für die Designerunterstützung.
56
    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
57
    /// </summary>
58
    void InitializeComponent(void)
59
    {
60
      this->button1 = (gcnew System::Windows::Forms::Button());
61
      this->SuspendLayout();
62
      // 
63
      // button1
64
      // 
65
      this->button1->Location = System::Drawing::Point(22, 42);
66
      this->button1->Name = L"button1";
67
      this->button1->Size = System::Drawing::Size(89, 22);
68
      this->button1->TabIndex = 0;
69
      this->button1->Text = L"button1";
70
      this->button1->UseVisualStyleBackColor = true;
71
      this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
72
      // 
73
      // Form1
74
      // 
75
      this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
76
      this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
77
      this->ClientSize = System::Drawing::Size(292, 273);
78
      this->Controls->Add(this->button1);
79
      this->Name = L"Form1";
80
      this->Text = L"Form1";
81
      this->ResumeLayout(false);
82

83
    }
84
#pragma endregion
85
  private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
86
       {
87
         string dir="c:\\";
88

89

90
       }
91
  };
92
}
#1435483
Lesenswert?

Eine kleine Funktion um alle Dateien unterhalb des Basispfades 
aufzulisten (GetFiles und GetDirectories erlauben auch die Angabe von 
Suchmustern ala *.txt)
1
    
2
    private void recDir(string basePath, List<string> files) {
3
        var dirs = Directory.GetDirectories(basePath);
4
        foreach (var s in Directory.GetFiles(basePath)) {
5
            // do something
6
            files.Add(s);
7
        }
8
        foreach (var d in dirs) {
9
            recDir(d, files);
10
        }
11
    }
p.s. keine Lust das in Managed C++ umzuschreiben...
#1435510
Lesenswert?

Klaus Wachtler schrieb:
> Freaky schrieb:
>> Ich glaube ich bleibe ich bleibe doch bei C#. Das ist um einiges
>> einfacher.
>
> C++ und .NET gleichzeitig ist in der Tat krank.
>
> Entweder .NET (wenn es unbedingt sein muß mit C#), oder
> C++ mit einer vernünftigen Umgebung.

Das macht C++ auch nicht besser (SCNR).
#1435584
Lesenswert?

Klaus Wachtler schrieb:
> Was ist schlecht an C++? Die Leute, die sich vergeblich daran versuchen?
> :-)

Der Link von Sven P. reicht eigentlich schon...
Hinzukommen u.a. noch diverse "vergessene Features"
- Reflection ist nicht vorhanden
- Introspection so gut wie unbrauchbar
- Closures (erst in C++0x)
- keine dynamischen Features wie Code-Generierung zur Laufzeit
- etc. pp.
Gast #1435721
Lesenswert?

Ich hab nichts gegen C++. C++ progrtammieren unter Micosoft Visual 
Studio C++ 2008 ist ein echter Krampf. Konsole Programme mit C++ sind 
kein Problem, aber sobald man win WinForm Anwendung machen möchte, dann 
ist das echt kompliziert mit dem .NET Zeugs.
Gast #1435939
Lesenswert?

> Der Link von Sven P. reicht eigentlich schon...

Typischer Text von jemandem, der C++ nicht verstanden hat. Ich tippe auf 
einen Java- oder C#-Programmierer, der versucht, den dort üblichen 
Programmierstil auf C++ zu übertragen, dabei scheitert und die Schuld 
daran nicht seinem fehlerhaften Ansatz, sondern der Sprache gibt.
An manchen seiner Punkte mag was dran sein, aber einiges ist einfach nur 
Unsinn.
Gast #1436105
Lesenswert?

Hi Rolf Magnus, ich denke da leider nicht so. Mit Sicherheit gibt es 
bestimmt zahlreiche Programmierer die das Visual Studio C++ verfluchen 
werden. Aber egal, kannst du mir ein guten Skript bzw. Tutorial 
(deutsch) empfehlen, mit dem der Einstieg der C++ Programmierung unter 
Visual Studio erleichtert?
#1436114
Lesenswert?

Freaky schrieb:
> Hi Rolf Magnus, ich denke da leider nicht so. Mit Sicherheit gibt es
> bestimmt zahlreiche Programmierer die das Visual Studio C++ verfluchen
> werden. Aber egal, kannst du mir ein guten Skript bzw. Tutorial
> (deutsch) empfehlen, mit dem der Einstieg der C++ Programmierung unter
> Visual Studio erleichtert?

Du musst als allererstes unterscheiden zwischen C++ und dem was sich MS 
als 'managed C++' vorstellt. Beides hat eigentlich nicht mehr viel 
miteinander zu tun. MS möchte damit C++ Programmierer in die .Net 
Schiene ziehen. Für .Net ist aber auch das 'managed C++' meiner Meinung 
nach nicht besonders gut geeignet. Mit C# oder VB fährt man da 
wesentlich besser. Die Prinzipien von .Net laufen den Prinzipien von C++ 
(also der nicht managed Version) einfach zuwieder.

Visual Studio ist für beides geeignet. Und auch als reines C++ System, 
so wie sich Stroustrup das vorgestellt hat, ist VS ein tatsächlich sehr 
brauchbares System.

Wenn du also C++ programmieren willst, mach dich mit der Bedienung von 
VS vertraut, kauf dir einen Stroustrup und fang zu lernen an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren