MFCとgetline()の相性について – プログラミング – Home

MFCとgetline()の相性につい...
 
通知
すべてクリア

[解決済] MFCとgetline()の相性について


shimodate
 shimodate
(@shimodate)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

こんにちは。
以下の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ではなく通常のアプリケーションと
して作成するとコンパイルは通ります。
なぜだか理由がわかりますでしょうか?

よろしくお願いします。


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

std::getlineは string ヘッダファイルに定義されています。


返信引用
shimodate
 shimodate
(@shimodate)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

解決しました。
本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました