首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者疑问希望大神解答

2013-10-27 
菜鸟疑问希望大神解答// vector_stl3.cpp : 定义控制台应用程序的入口点。//#include stdafx.h#include

菜鸟疑问希望大神解答
// vector_stl3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <set>
#include <iterator>
#include <cctype>
using namespace std;

void show_strin(const string &str);

char toLower(char ch){ return tolower(ch);}

string& ToLower(string&str);

int main( ) 
{

vector<string> letters;
string plater;

    while(cin>>plater&&plater!="quit")
letters.push_back(plater);

set<string> words;
transform(plater.begin(),plater.end(),insert_iterator<set<string> >(words,words.begin()),ToLower);
cout<<endl;
for_each(words.begin(),words.end(),show_strin);
cout<<endl;

system("pause");
return 0;
}

string &ToLower(string &st)
{
transform(st.begin(),st.end(),st.begin(),toLower);
return st;
}

void show_strin(const string &st)
{
cout<<st<<" ";
}
错误提示是:
1>d:\vs2010\vc\include\algorithm(1043): error C2664: “std::string &(std::string &)”: 不能将参数 1 从“char”转换为“std::string &”
1>          d:\vs2010\vc\include\algorithm(1069): 参见对正在编译的函数 模板 实例化“_OutIt std::_Transform<_InIt,_OutIt,std::string&(__cdecl *)(std::string &)>(_InIt,_InIt,_OutIt,_Fn1)”的引用
到底该怎么改菜鸟求大神帮忙谢谢了。
[解决办法]
错误提示的线索很清晰:企图将char类型转换为std:string & 引用类型。
[解决办法]
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//



#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <set>
#include <iterator>
#include <cctype>
using namespace std;

void show_strin(const string &str);

char toLower(char ch)

return tolower(ch);
}

string& ToLower(string&str);

int main( ) 
{

vector<string> letters;
string plater;

    while(cin>>plater&&plater!="quit")
letters.push_back(plater);

set<string> words;
//transform(plater.begin(),plater.end(),insert_iterator<set<string> >
//注释掉这一行 你会发现你的程序可以通过了 说明问题出在这一行 继续分析
(words,words.begin()),ToLower);

cout<<endl;
for_each(words.begin(),words.end(),show_strin);
cout<<endl;

system("pause");
return 0;
}

string &ToLower(string &st)
{
transform(st.begin(),st.end(),st.begin(),toLower);
return st;
}

void show_strin(const string &st)
{
cout<<st<<" ";
}

[解决办法]
应该是这一句吧:


transform(/*plater*/letters.begin(),/*plater*/letters.end(),insert_iterator<set<string>>(words,words.begin()),ToLower);

热点排行