| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5520 人关注过本帖
标题:删除字符串中的标点符号的问题
只看楼主 加入收藏
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:12 
删除字符串中的标点符号的问题
代码如下
程序代码:
#include "stdafx.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    string s1;
    cout<<"请输入一行带有标点的字符串"<<endl;
    getline(cin,s1);
    cout<<s1<<endl;
    for(string::size_type i=0;i!=s1.size();i++)
    {
        if(ispunct(s1[i]))
        {
            for(string::size_type j=i;j<=s1.size();j++)
            {
                s1[j]=s1[j+1];
            }
            --i;
        }
    }
    cout<<s1<<endl;
    return 0;
}

编译时没有问题
但是运行的时候会出错

string subscript out of rang

搜索更多相关主题的帖子: 标点符号 字符 删除 
2009-09-11 12:19
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:20 
这里有个删除 符号的 函数 你看看:


程序代码:
void del_space(char *str) 
{ 
        int i, j; 
 
        for (i = j = 0; str[i] != '\0'; i++) { 
                if (!ispunct(str[i])) { 
                       str[j++] = str[i]; 
                } 
        } 
        str[j] = '\0'; 
}
2009-09-11 12:42
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
哦哦~~~
这样写
嘿嘿
谢谢了
2009-09-11 12:44
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:0 
#include <string>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
    string s1;
    cout<<"请输入一行带有标点的字符串"<<endl;
    getline(cin,s1);
    cout<<s1<<endl;
    string::size_type i=0;
    string s2;
    while(i<s1.size())
    {
        if(!ispunct(s1[i])) s2+=s1[i];
        i++;
     }
    cout<<s2<<endl;
    return 0;
}
2009-09-11 12:45
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
你的算法没有问题  不知道是不是编译器的问题

我用vc  把你的代码改了一些  运行没问题啊

程序代码:
#include <iostream> 
#include <string> 
using namespace std; 
 
 
int main() 
{ 
    string s1; 
    cout<<"请输入一行带有标点的字符串"<<endl; 
    getline(cin,s1); 
    cout<<s1<<endl; 
    for(string::size_type i=0;i!=s1.size();i++) 
    { 
        if(ispunct(s1[i])) 
        { 
            for(string::size_type j=i;j<=s1.size();j++) 
            { 
                s1[j]=s1[j+1]; 
            } 
            --i; 
        } 
    } 
    cout<<s1<<endl; 
    return 0; 
}
2009-09-11 12:48
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
顺便问一下  这些事什么东西呢?  我看了半天没看懂..

不要笑话我  少见多怪

#include "stdafx.h" //这个头文件有什么用呢?
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
//这是主函数吧?  带参数有什么用呢?  听说是给int main() 是一样的.不过用 这个编译没通过


谢谢了
2009-09-11 12:53
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
这个函数无法删除在句尾的标点啊
2009-09-11 12:53
liang890806
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2009-7-28
收藏
得分:0 
我用的vc++ 2008
程序代码:
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>



// TODO: 在此处引用程序需要的其他头文件
这是stdafx.h
2009-09-11 12:55
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
没问题啊??
2009-09-11 12:55
edward9092
Rank: 2
等 级:等待验证会员
帖 子:329
专家分:59
注 册:2009-1-5
收藏
得分:0 
回复 8楼 liang890806
  难怪我的 vc里找不到 那个头文件啰..
2009-09-11 12:56
快速回复:删除字符串中的标点符号的问题
数据加载中...
 
   



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

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