返回信息流编程过程中遇到困惑如下
string str1="中华人民共和国 北京 五星红旗 义勇军进行曲";
int position=str1.find(" ");
cout<<position<<endl;
string str2=str1.substr(0,position);
cout<<str2<<endl;
结果position输出值为14,str2为中华人民共和国。
我不解的是,find函数是从后往前找吗,这样14就可以解释通,但str1.substr(0,position)即str1.substr(0,14)怎么会是中华人民共和国?
请大家帮忙解答
这是一条镜像帖。来源:北邮人论坛 / cpp / #78494同步于 2014/4/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C++中find()和substr()函数用法困惑
bupt13332
2014/4/17镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
string本身就是ansi编码,所以1个汉字会被编为两个ANSI码。
你可以换用wstring试试。
表示用惯了mfc的CString,改用c++的字串类很淡疼。
恩,谢了
【 在 jetstorm 的大作中提到: 】
: string本身就是ansi编码,所以1个汉字会被编为两个ANSI码。
: 你可以换用wstring试试。
: 表示用惯了mfc的CString,改用c++的字串类很淡疼。
知道了
【 在 nuanyangyang 的大作中提到: 】
: C++源代码里包含中文最好用C++11的专门的国际化字符串语法。另外宽字符比多字节容易处理一些。
【 在 nuanyangyang 的大作中提到: 】
: C++源代码里包含中文最好用C++11的专门的国际化字符串语法。另外宽字符比多字节容易处理一些。
c++11在公司还没有普及起来啊, 楼主这种情况用wstring比较好吧
来自「北邮人论坛手机版」
【 在 gsl2011 的大作中提到: 】
: c++11在公司还没有普及起来啊, 楼主这种情况用wstring比较好吧
: 来自「北邮人论坛手机版」
嗯。G++也明确说了目前对C++11的支持还是实验阶段。安全起见,C++里的中文字符串……还是外部处理,或者用别的办法吧。
【 在 nuanyangyang 的大作中提到: 】
:
: 嗯。G++也明确说了目前对C++11的支持还是实验阶段。安全起见,C++里的中文字符串……还是外部处理,或者用别的办法吧。
最近也被中文坑了一次。。。
来自「北邮人论坛手机版」