2012-06-28 5 views
0

다음 줄은 vc6에서 제대로 컴파일되지만 vs2008에서 프로젝트를 업그레이드하면 많은 오류가 발견되었지만 주로 2 가지 오류가 있습니다.프로젝트 업그레이드에서 오류가 발견되었습니다. 연산자 '='가 모호합니다. 'ios': 클래스 또는 네임 스페이스 이름이 아닙니다.

//open log file 
    parent->m_LogFile.open(strFileName, ios::app | ios::out, filebuf::sh_read); 

오류 : 오류 C2653 : 'IOS는' 오류 C2593 : 클래스 또는 네임 스페이스 이름

CString CReverseProxy::PutData(CString strData) 
{ 
    CString strSW = ""; 

    CString strPayload; 
    DWORD dwRet; 
    BYTE SendBuffer[MAX_LEN]; 
    BYTE RecvBuffer[MAX_RETURN_SIZE]; 
    ULONG ulSendLength = sizeof(SendBuffer); 
    ULONG ulRecLength = sizeof(RecvBuffer); 

    while ((strData.GetLength()/2) > 255) 
    { 
     strPayload = strData.Mid(0, 510); 
     strData  = strData.Delete(0, strPayload.GetLength());//error 

오류없는 '연산자 ='모호합니다.

답변

1

첫 번째 문제는 열린 상태에서 std::ios을 사용하거나 파일 시작 부분에 using std::ios을 사용하여 해결할 수 있습니다.

두 번째 문제는 CString::Delete이 int를 반환한다는 사실 때문에 발생합니다. 이것은 정확히 strData에 할당하려는 것이 아닙니다. 맞습니까? 과제를 삭제하면 DeletestrData을 수정합니다.

+0

이 동일합니다. std :: ios_base – vikky

+0

예. 일반적으로'ios'는'ios_base'에서 상속받습니다. VS에서'ios'는 실제로'ios_base'를 상속받은'basic_ios'의 typedef입니다. 따라서 상수는 정확히 동일하므로 두 클래스 중 하나를 사용하여 상수에 액세스 할 수 있습니다. – eran

+0

내가 사용했지만 첫 번째 오류에 대한 문제는 동일합니다 ........ – vikky