Linux命令行下的C++程序输入汉字出有关问题,求解

Linux命令行下的C++程序输入汉字出问题,求解。
Ubuntu10.04,内核3.1.10,g++版本:g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
我写命令行下的程序,输入中文出错,我写了个测试程序如下:
C/C++ code

#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>

using namespace std;

int main()
{
    string chinese;
    cout<<"输入中文:";
    cin>>chinese;
    cout<<"你输入的是;"<<chinese<<endl;
    return 0;
}


用g++ chinese.cpp -o chinese编译后运行,如果输入汉字后没有删除,或者输入的是英文字母及数字,一切正常,如下:
C/C++ code

zym@zym-freedom:~/code$ ./chinese
输入中文:abc123
你输入的是;abc123
zym@zym-freedom:~/code$ ./chinese
输入中文:这是汉字
你输入的是;这是汉字


但是如果输入的是汉字并且输入以后发现输错了,要删的时侯就出错:
C/C++ code

zym@zym-freedom:~/code$ ./chinese
输入中文:这是汉字 
你输入的是;这是汉
zym@zym-freedom:~/code$ ./chinese
输入中文:这是汉字这是汉  
你输入的是;这是汉字这是


这里测试了两次,第一次我输完后只按了一下退格,光标退了半格(就是半个汉字),在”字“上,从下面的输出看,”字“是被删了,可是在”输入文字“一行里,它还在。下面一次更明显,我按了2次退格,结果显示似乎是只删了一个字,其实是删了2个字。也就是在命令行下的汉字显示不对,但变量的值还是对的。
查了一下好像要用utf-8编码、wchar_t什么的,可惜我用了编译报错(没有重载<<,>>之类的)。
请教大家该怎么办?谢谢!

------解决方案--------------------
这个是终端的问题,linux下的终端对非ascii的支持不太友好
你可以换一个终端工具试试,比如windows下的putty
------解决方案--------------------
它们应该是自己实现的屏幕管理吧

应该是删除一次,屏幕上是按半角字符处理的,只回退了关个汉字的距离,而实际上因为使用的是utf-8,删除了一个完整的字,导致看到的和程序读到的不一致。

你可以试着修改一下系统的字符集,gbk, utf-8的效果可能不一样。
------解决方案--------------------
C/C++ code
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <locale.h>

using namespace std;

int main()
{
    string chinese;
    setlocale(LC_ALL,"chs");
    cout<<"输入中文:";
    cin>>chinese;
    cout<<"你输入的是;"<<chinese<<endl;
    return 0;
}

------解决方案--------------------
这个问题充分说明Linux终端的编写者的水平不如Windows终端cmd的编写者的水平高。(^_^)