こんにちは。
以下のMFCアプリケーションウィザードで作成した簡単なプログラムを作成しました。
CPPStreamSample.cpp
----------------------------------------------------------------------------
// CPPStreamSample.cpp : コンソール アプリケーションのエントリ ポイントを定義し
ます。
//
#include stdafx.h
#include CPPStreamSample.h
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 唯一のアプリケーション オブジェクトです。
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// MFC を初期化して、エラーの場合は結果を印刷します。
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
_tprintf(_T(致命的なエラー : MFC の初期化ができませんでし
た。\n));
nRetCode = 1;
}
ifstream fin;
string sLine;
fin.open(mydata.txt);
if (!fin)
{
cout << open error.\n;
}
while (getline(fin, sLine))
{
cout << sLine;
}
fin.close();
return nRetCode;
}
----------------------------------------------------------------------------
stdafx.h
----------------------------------------------------------------------------
// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、また
は
// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイ
ル
// を記述します。
//
#pragma once
#define WIN32_LEAN_AND_MEAN // Windows ヘッダーから使用されていない部分
を除外します。
#include <stdio.h>
#include <tchar.h>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 一部の CString コンストラクタは
明示的です。
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Windows ヘッダーから使用されていない部分
を除外します。
#endif
#include <afx.h>
#include <afxwin.h> // MFC のコアおよび標準コンポーネント
#include <afxext.h> // MFC の拡張部分
#include <afxdtctl.h> // MFC の Internet Explorer 4 コモン コント
ロール サポート
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC の Windows コモン コントロ
ール サポート
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <iostream>
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include <fstream>
----------------------------------------------------------------------------
これをコンパイルすると、
----------------------------------------------------------------------------
c:\Documents and Settings\A.simodate\My Documents\Visual Studio
Projects\CPPStreamSample\CPPStreamSample.cpp(36) : error C2065: 'getline' : 定義
されていない識別子です。
c:\Documents and Settings\A.simodate\My Documents\Visual Studio
Projects\CPPStreamSample\CPPStreamSample.cpp(38) : error C2679: 二項演算
子 '<<' : 型 'std::string' の右オペランドを扱う演算子が見つかりません (または変
換できません)。
----------------------------------------------------------------------------
とエラーがでてしまいます。
必要なヘッダはインクルードしているはずで、MFCではなく通常のアプリケーションと
して作成するとコンパイルは通ります。
なぜだか理由がわかりますでしょうか?
よろしくお願いします。
std::getlineは string ヘッダファイルに定義されています。
解決しました。
本当にありがとうございました。