升级项目时发现错误:操作符“=”不明确且“ios”:不是类或命名空间名称

Posted

技术标签:

【中文标题】升级项目时发现错误:操作符“=”不明确且“ios”:不是类或命名空间名称【英文标题】:error found in upgrading project:operator '=' is ambiguous and 'ios' : is not a class or namespace name 【发布时间】:2012-06-28 07:22:21 【问题描述】:

以下行在vc6中编译正常,但是当我在vs2008中升级项目时,我发现了很多错误,但主要是2个错误。

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

错误:错误 C2653:“ios”:不是类或命名空间名称

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

错误:错误 C2593:'operator =' 不明确。

【问题讨论】:

【参考方案1】:

第一个问题可能可以通过在打开时使用std::ios 或在文件开头使用using std::ios 来解决。

第二个问题是由CString::Delete 返回一个int 引起的。这绝对不是你想分配给strData 的,对吧?只需删除分配,Delete 无论如何都会修改strData

【讨论】:

是的。通常,ios 继承自 ios_base。在VS中,ios实际上是一个basic_ios的typedef,它继承自ios_base。所以常量是完全一样的,你可以使用任何一个类来访问它们。 open那个文件包含什么?您应该确保最终包含 (最好不是直接包含,而是通过另一个流标头)。

以上是关于升级项目时发现错误:操作符“=”不明确且“ios”:不是类或命名空间名称的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu操作系统升级

iOS极光推送别名限制问题

在 MacOS 上安装 psycopg2 失败,错误消息不明确

.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException

.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException

.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException