May 17, 2011 at 8:04pm UTC
Hi I am trying to create a simple file reading program in Visual C++ 2008 using fstream. When I compile it it gives me a dozzen errors to do with the fstream class. I think that the class is not being included properly.
Here is my code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
#pragma once
#include <fstream>
#include <iostream>
#include <cstdio>
#include <string>
#include "stdafx.h"
namespace Cttest007 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public :
Form1(void )
{
String ^ data;
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected :
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private : System::Windows::Forms::Button^ button1;
protected :
private : System::Windows::Forms::Label^ label1;
private :
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void )
{
this ->button1 = (gcnew System::Windows::Forms::Button());
this ->label1 = (gcnew System::Windows::Forms::Label());
this ->SuspendLayout();
//
// button1
//
this ->button1->Location = System::Drawing::Point(197, 17);
this ->button1->Name = L"button1" ;
this ->button1->Size = System::Drawing::Size(73, 28);
this ->button1->TabIndex = 0;
this ->button1->Text = L"button1" ;
this ->button1->UseVisualStyleBackColor = true ;
this ->button1->Click += gcnew System::EventHandler(this , &Form1::button1_Click);
//
// label1
//
this ->label1->AutoSize = true ;
this ->label1->Location = System::Drawing::Point(22, 108);
this ->label1->Name = L"label1" ;
this ->label1->Size = System::Drawing::Size(35, 13);
this ->label1->TabIndex = 1;
this ->label1->Text = L"label1" ;
//
// Form1
//
this ->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this ->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this ->ClientSize = System::Drawing::Size(292, 266);
this ->Controls->Add(this ->label1);
this ->Controls->Add(this ->button1);
this ->Name = L"Form1" ;
this ->Text = L"Form1" ;
this ->ResumeLayout(false );
this ->PerformLayout();
}
#pragma endregion
private : System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
ifstream ifs;
ifs.open( "test.txt" , std::ios::in );
ifs >> data;
label1->Text = data;
ifs.close();
}
};
}
Last edited on May 17, 2011 at 8:25pm UTC
May 17, 2011 at 8:14pm UTC
This is not c++ language. And your includes must be in angle brackets, not double quotes:
#include <fstream>
May 17, 2011 at 8:24pm UTC
I tried that and it still gives me the same errors.
I also edited the code example and changed it to '<<'.
May 17, 2011 at 9:31pm UTC
As stated by modoran, you are not showing C++ code, but C++/CLI, which is pretty much a different language. In your button's click event you are mixing C++ with C++/CLI. Without knowing C++/CLI, I dare say this is not valid. Double check, of course. I believe you can use regular C++ but not all of the sudden as you are doing. Best thing you can do: Search the net for an introductory tutorial on C++/CLI.
May 17, 2011 at 10:53pm UTC
C++ and C++/CLI should interop without issues (I use C++/CLI for user interfaces for my libraries.)
Post the
exact compiler output that you're getting if you want help.
Offhand, I can see that:
1) ifstream doesn't exist in the global namespace, nor the Cttest007 namespace
1 2 3
// Did you mean
std::ifstream
// ?
2) std::string cannot convert to System::String
http://codeoflegend.blogspot.com/2011/04/ccli-stdstring-to-systemstring.html
Last edited on May 17, 2011 at 10:59pm UTC
May 19, 2011 at 7:09pm UTC
Thanks for your help I have figured it out and its working fine now.