| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3997 人关注过本帖
标题:C++中汉字字符串的操作问题,请大神讲解一下
取消只看楼主 加入收藏
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
C++中汉字字符串的操作问题,请大神讲解一下
程序代码:
#include<iostream>
int replace_(char* str,char c1,char c2);////功能:将C风格的str字符串的中c1字符全换成c2字符,并返回替换次数
///字符串为英文时是没问题,中文就有问题了,请问是编译软件不识别中文的问题还是说汉字在字符串中的存储机制导致的呢?
int main()
{
    using namespace std;
    char str[]="李明是个大笨蛋.";
    cout<<"the str[] is: "<<str<<endl;
    cout<<"it's had been changed "<<replace_(str,'','')
    <<" times and after replace function, the str[] is:\n"
    <<str<<endl;
}
int replace_(char* str,char c1,char c2)
{
    int count_=0;
    while(*str!='\0')
    {
        if(*str==c1)
        {
            *str=c2;
            count_++;
        }
        str++;
    }
    return count_;
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-1-13 15:50编辑过]

搜索更多相关主题的帖子: 字符串 汉字 风格 
2016-01-13 15:35
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 2楼 rjsp
r版,那请问要实现汉字的替换应该怎么做呢?
2016-01-13 17:39
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 7楼 TonyDeng
感觉要被T版玩坏了呀,CodeBlocks上编译出了错,我打算回去用vs2013编一下
2016-01-14 09:09
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 10楼 wmf2014
感谢w版
2016-01-14 11:06
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 14楼 TonyDeng
嗯嗯,string类对象确定很有优势,C++ PP第六版前七章基本用的还都是C风格字符串,只到第16章才正式介绍string,有些不合理
2016-01-15 10:29
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
以下是引用TonyDeng在2016-1-13 23:15:10的发言:


程序代码:
#include <cstdio>
#include <string>
#include <clocale>

int wmain()
{
    _wsetlocale(LC_ALL, L"chs");

    std::wstring str(L"wengbin是个大笨蛋?Tony是个聪明人?");
    const std::wstring s1(L"是个");//T版,我现在只看到一个问题,那就是让s1为空(什么也没有),const std::wstring s1(L"");
//这样时,就不能继续下去了,应该要返回原字符串才对,其他还有什么问题嘛?我找不到了呀
    const std::wstring s2(L"是不是");

    std::wstring::size_type pos = 0;
    while ((pos = str.find(s1, pos)) != str.npos)
    {
        str.replace(pos, s1.size(), s2);
    }
    wprintf_s(L"字符串: %s\n", str.c_str());

    getwchar();
    return EXIT_SUCCESS;
}
2016-01-15 10:34
快速回复:C++中汉字字符串的操作问题,请大神讲解一下
数据加载中...
 
   



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

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