菜鸟疑问希望大神解答

何时为码农 2013-10-17 04:19:39
// 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)”的引用
到底该怎么改菜鸟求大神帮忙谢谢了。
...全文
137 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JiMoKuangXiangQu 2013-10-17
  • 打赏
  • 举报
回复
应该是这一句吧:

transform(/*plater*/letters.begin(),/*plater*/letters.end(),insert_iterator<set<string>>(words,words.begin()),ToLower);
做或不做 2013-10-17
  • 打赏
  • 举报
回复
// 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<<" "; }
JiMoKuangXiangQu 2013-10-17
  • 打赏
  • 举报
回复
错误提示的线索很清晰:企图将char类型转换为std:string & 引用类型。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧