| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:大神快来帮忙看看,求解
只看楼主 加入收藏
isluckyguo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-8-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
大神快来帮忙看看,求解
#include "stdafx.h"
#include <vector>
#include <iostream.h>

bool isshorter(const string &s1, const string &s2)
{
    return s1.size() < s2.size();
}
bool GT6( const string &s)
{
    return s.size() >= 6;
}
string make_plural(size_t ctr, string &words, string &word)
{
    return (ctr == 1)? words : words+word;
}
int _tmain(int argc, _TCHAR* argv[])
{
    vector<string> words;
    string next_word;
    while (std::cin >> next_word)
    {
        words.push_back(next_word);
    }
    sort(words.begin(),words.end());
    vector<string>::iterator end_unique = unique(words.begin(),words.end());
    words.erase(end_unique,words.end());
    stable_sort(words.begin(),words.end(),isshorter);
    vector<string>::size_type wc = count_if(words.begin(),words.end(),GT6);
    std::cout << wc <<"" <<make_plural(wc,"word","s") <<"6 characters or longer" <<endl;
    return 0;
}
我在vs2008上编译时一直出现如下错误
1>d:\lianxic++\readwords\readwords\readwords.cpp(6) : fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
修改为#include <iostream>
       using namespace std;
后出现一堆如下错误1>d:\lianxic++\readwords\readwords\readwords.cpp(18) : error C2784: “std::_Vb_iterator<_Sizet,_Difft,_MycontTy> std::operator +(_Difft,std::_Vb_iterator<_Sizet,_Difft,_MycontTy>)”: 无法从“std::string”为“std::_Vb_iterator<_Sizet,_Difft,_MycontTy>”推导 模板 参数
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\vector(1854) : 参见“std::operator +”的声明
1>d:\lianxic++\readwords\readwords\readwords.cpp(18) : error C2784: “std::_Vb_iterator<_Sizet,_Difft,_MycontTy> std::operator +(_Difft,std::_Vb_iterator<_Sizet,_Difft,_MycontTy>)”: 无法从“std::string”为“std::_Vb_iterator<_Sizet,_Difft,_MycontTy>”推导 模板 参数
不知道该怎么修改。希望大声快来帮帮
搜索更多相关主题的帖子: include return 
2014-08-18 12:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:15 
懒得改了,你还是自己看书吧
程序代码:
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

bool isshorter( const string& s1, const string& s2 )
{
    return s1.size() < s2.size();
}
bool GT6( const string& s )
{
    return s.size() >= 6;
}
string make_plural( size_t ctr, const string& words, const string& word )
{
    return (ctr == 1) ? words : words+word;
}
int main()
{
    vector<string> words;
    for( string next_word; std::cin>>next_word; )
    {
        words.push_back(next_word);
    }
    sort(words.begin(),words.end());
    words.erase( unique(words.begin(),words.end()), words.end() );
    stable_sort(words.begin(),words.end(),isshorter);
    vector<string>::size_type wc = count_if(words.begin(),words.end(),GT6);
    std::cout << wc <<"" <<make_plural(wc,"word","s") <<"6 characters or longer" <<endl;
    return 0;
}

2014-08-18 13:00
isluckyguo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-8-17
收藏
得分:0 
回复 2 楼 rjsp
非常感谢你啊,按照你的指导,我修改了一下但仍然出错,
#include "stdafx.h"
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;


bool isshorter(const string& s1, const string& s2)
{
    return s1.size() < s2.size();
}
bool GT6( const string& s)
{
    return s.size() >= 6;
}
string make_plural(size_t ctr, string& words, string& word)
{
    return (ctr == 1)? words : words+word;
}
int main()
{
    vector<string> words;
    string next_word;
    while (std::cin >> next_word)
    {
        words.push_back(next_word);
    }
    sort(words.begin(),words.end());
    vector<string>::iterator end_unique = unique(words.begin(),words.end());
    words.erase(end_unique,words.end());
    stable_sort(words.begin(),words.end(),isshorter);
    vector<string>::size_type wc = count_if(words.begin(),words.end(),GT6);
    std::cout << wc <<"" <<make_plural(wc,"word","s") <<"6 characters or longer" <<endl;
    return 0;
}
编译之后显示错误为1>d:\lianxic++\readwords\readwords\readwords.cpp(37) : error C2664: “make_plural”: 不能将参数 2 从“const char [5]”转换为“std::string &”
我是一个初学者,学过的东西不能贯通起来,朋友希望能都指导一下,不胜感激
2014-08-18 13:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
vs2010  编译2楼代码 没问题的

DO IT YOURSELF !
2014-08-18 14:09
isluckyguo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-8-17
收藏
得分:0 
恩,2008也没问题,就是我写的有问题,我和2楼不一样就是他是 vector<string> words;
    for( string next_word; std::cin>>next_word; )
    {
        words.push_back(next_word);
    }
    sort(words.begin(),words.end());
    words.erase( unique(words.begin(),words.end()), words.end() );
而我写的是
 vector<string> words;
    string next_word;
    while (std::cin >> next_word)
    {
        words.push_back(next_word);
    }
    sort(words.begin(),words.end());
    vector<string>::iterator end_unique = unique(words.begin(),words.end());
    words.erase(end_unique,words.end());
其他的一样,但我的就还是出错,不知道因为什么,希望有人指导
2014-08-18 14:19
快速回复:大神快来帮忙看看,求解
数据加载中...
 
   



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

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