标题:菜鸟问题,不要见笑
只看楼主
yjg19841211
Rank: 2
等 级:论坛游民
帖 子:39
专家分:41
注 册:2008-5-18
结帖率:66.67%
已结贴  问题点数:0 回复次数:12 
菜鸟问题,不要见笑
#include<iostream>
#include<string>
#include<cstring>
void strcount(char  *);
int main()
{
    using namespace std;
    string str;
    cout<<"enter...........\n";
    getline(cin,str);
    while(str!="")
    {
        strcount(&str);
        cout<<"enter!\n";
        getline(cin,str);
    }
    cout<<"*********\n";
    return 0;
}
void strcount(char *str)
{
    using namespace std;
    static int total=0;
    int count=0;
    while(*str++)
        count++;
    total+=count;
    cout<<count<<endl;
    cout<<total<<endl;
}
编译失败,错误为
 error C2664: 'strcount' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *' to 'char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

xiti92.exe - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: 见笑 
2010-08-27 23:54
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
得分:0 
错了,好像不行那样。

[ 本帖最后由 毕业旅行 于 2010-8-28 00:47 编辑 ]
2010-08-28 00:25
weble
Rank: 2
等 级:论坛游民
帖 子:59
专家分:83
注 册:2009-4-12
得分:0 
直接写str.size()就可以得到字符串长度了
另外string是C++类型,不提供到char*类型的转换运算符

路漫漫其修远兮,吾将上下而求索
2010-08-28 01:16
yjg19841211
Rank: 2
等 级:论坛游民
帖 子:39
专家分:41
注 册:2008-5-18
得分:0 
高手指点下,谢谢
2010-08-28 12:02
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
得分:0 
程序代码:
#include<iostream>
#include<string>
#include<cstring>
using std::cout;
using std::string;
using std::cin;
using std::endl;

void strcount(string str);
int main()
{
    string str;
    cout<<"enter...........\n";
    getline(cin,str);
    while(str!="")
    {
        strcount(str);
        cout<<"enter!\n";
        getline(cin,str);
    }
    cout<<"*********\n";
    return 0;
}
void strcount(string str)
{
    static int total=0;
    int count=0;
    string::size_type size_str = str.size ( );

 for(string::size_type index = 0 ; index != size_str && str[index++] ;)  {
     ++count;

 }
    total+=count;
    cout<<count<<endl;
    cout<<total<<endl;
}
改了下不清楚对不对,O(∩_∩)O~
2010-08-28 12:04
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
得分:20 
程序代码:
#include<iostream>
#include<string>
#include<cstring>
using std::cout;
using std::string;
using std::cin;
using std::endl;

void strcount(string str);
int main()
{
    string str;
    cout<<"enter...........\n";
    getline(cin,str);
    while(str!="")
    {
        strcount(str);
        cout<<"enter!\n";
        getline(cin,str);
    }
    cout<<"*********\n";
    return 0;
}
void strcount(string str)
{
    static int total=0;
    int count=0;
    string::size_type size_str = str.size ( );

 for(string::size_type index = 0 ; index != size_str ; ++index)  {
     if (str[index] != ' ')
     ++count;

 }
    total+=count;
    cout<<count<<endl;
    cout<<total<<endl;
}
不好意思,上面那个会把空格算在内的...再改了下,这个可以过滤空格
2010-08-28 12:14
yjg19841211
Rank: 2
等 级:论坛游民
帖 子:39
专家分:41
注 册:2008-5-18
得分:0 
先谢谢高手指点,下班在给分哈
2010-08-28 17:02
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:0 
程序代码:
#include<iostream>
#include<string>
#include<cstring>
using std::cout;
using std::string;
using std::cin;
using std::endl;

void strcount(string str);
int main()
{
    string str;
    cout<<"enter...........\n";
    getline(cin,str);
    while(str!="")
    {
        strcount(str);
        cout<<"enter!\n";
        getline(cin,str);
    }
    cout<<"*********\n";
    return 0;
}
void strcount(string str)
{
    static int total=0;
    int count=0;
    string::size_type size_str = str.size ( );
for(string::size_type index = 0 ; index != size_str ; ++index)  {
     if (str[index] != ' ')
     ++count;
}
    total+=count;
    cout<<count<<endl;
    cout<<total<<endl;
}

南国利剑
2010-08-28 23:23
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:0 
头文件还是写成上面的样子比较不会出错

南国利剑
2010-08-28 23:24
yjg19841211
Rank: 2
等 级:论坛游民
帖 子:39
专家分:41
注 册:2008-5-18
得分:0 
...........在帮帮忙,好象不能循环输入,大家看看循环有问题没,用cin的话可以循环,但无法退出
2010-08-28 23:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-316997-1-1.html




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

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