| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2041 人关注过本帖
标题:字典程序,但是为什么编译时有left operand must be l-value这个错误,希望 ...
只看楼主 加入收藏
jinmyan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-6
结帖率:0
收藏
已结贴  问题点数:5 回复次数:5 
字典程序,但是为什么编译时有left operand must be l-value这个错误,希望大家解决呀
#include "iostream.h"
#include "fstream.h"
#include "string.h"
#define MAX 1000
struct WORD
{
    char english[10];
    char chinese[20];
};
class dictionary
{
private:
    WORD word[MAX];
public:
    int i;
    dictionary();
    void inputword();
    void inputword(char wor[10]);
    void checkword();
    void showdic();
    void alter();
    friend ostream &operator<<(ostream &out,WORD word);
};
dictionary::dictionary()
{
    i=1;
}
void dictionary::inputword()
{
    if(i>MAX)return;
    cout<<"请输入单词:";
    cin>>word[i].english;
    cout<<"请输入单词中文意思:";
    cin>>word[i].chinese;
    i++;
}
void dictionary::inputword(char wor[10])
{
    if(i>MAX)return;
    strcpy(word[i].english,wor);
    cout<<"请输入中文意思:";
    cin>>word[i].chinese;
    i++;
}
void dictionary::checkword()
{
    bool isfind=false;
    char wordcheck[20];
    cout<<"请输入你要查找的单词:";
    cin>>wordcheck;
    for(int j=1;j<=i;j++)
    {
        if(strcmp(wordcheck,word[j].english)==0)
        {
            cout<<"中文意思:"<<word[j].chinese;
            isfind=true;
        }
    }
    if(!isfind)  
    {
        cout<<"单词没有找到!"<<endl;
        inputword(wordcheck);
    }
}
ostream &operator <<(ostream &out,WORD word)
{
    cout<<"enlish:"<<word.english;
    cout<<"        ";
    cout<<"中文:"<<word.chinese<<endl;
    return out;
}
void dictionary::showdic()
{
    int m;
    for(m=1;m<i;m++)cout<<word[m];
}
void dictionary::alter()
{
    char alterword[10];
    bool isfind=false;
    cout<<"请输入你想修改的单词:";
    cin>>alterword;
    for(int p=1;p<i;p++)
    {
        if(strcmp(word[p].english,alterword)==0)
        {
            char alterchinese[20];
            cout<<"输入你想修改的中文意思:";
            cin>>alterchinese;
            word[p].chinese=alterchinese;
            isfind=true;
        }
    }
    if(isfind==false)cout<<"没有找到这个单词!请重新输入:"<<endl;
}
void main()
{
    dictionary  dic;
    int n,m=1;
    cout<<".......................字典..........................."<<endl;
    cout<<"1..............输入单词.............................."<<endl;
    cout<<"2..............查单词................................"<<endl;
    cout<<"3..............显示字典库............................"<<endl;
    cout<<"4.............修改单词............................,.."<<endl;
    cout<<"5...............退出.................................."<<endl;
    while(m)
    {
        cin>>n;
        switch(n)
        {
           case 1:  dic.inputword();break;
           case 2:  dic.checkword();break;
           case 3:  dic.showdic();break;
           case 4:  dic.alter();break;
           case 5:  m=0;break;
        }
    }
}
编译时程序上面显示“蓝色”字体的错误,为什么呀?怎么解决呀?我的作业呀,希望大家帮帮小弟的忙呀!
搜索更多相关主题的帖子: 编译 字典 left operand 
2010-01-06 21:11
木瓜君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:144
注 册:2009-10-17
收藏
得分:2 
word[p].chinese = alterchinese;字符串不能这样赋值~~

strcpy(word[p].chinese,alterchinese);
将alterchinese复制给word[p].chinese
2010-01-06 22:15
kspliusa
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:98
专家分:178
注 册:2009-9-27
收藏
得分:2 
把 word[p].chinese=alterchinese; -> strcpy( word[p].chinese, alterchinese); 字符串不能直接用"="啊!

而且在我的编译器上(VC++6.0)
void dictionary::showdic()
{
    int m;
    for(m=1;m<i;m++)
    cout<<word[m];//这句也有问题
}
2010-01-06 22:41
jinmyan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-6
收藏
得分:0 
谢谢大家啊,字符串果然不能这样赋值!问题搞定啦,再次谢谢大家哦!
2010-01-07 13:13
云雨谣
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-8-4
收藏
得分:0 
??怎么没用啊,这个程序的运行有问题吧!!!
2010-01-17 16:00
jinmyan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-6
收藏
得分:0 
没有问题呀,(*^__^*) 嘻嘻……
2010-01-17 16:17
快速回复:字典程序,但是为什么编译时有left operand must be l-value这个错误, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029969 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved