我试图转换一个txt文件,所以所有单词都可以是小写的。当我尝试时出现错误我尝试了不同的方法但没有运气,我的代码如下:
ifstream words("sample_doc.txt");
ofstream samp("sample.txt");
set <string> lower;
set <string> to_low;
copy(istream_iterator<string>(words), istream_iterator<string> (), inserter(lower, begin(lower)) );
transform(begin(lower), end(lower), inserter(to_low, begin(to_low) ), tolower );
当我试图完成时,我收到此错误 &#39; int(int)&#39;:不能从&#39; const std :: basic_string,std :: allocator&gt;&#39;转换参数1到&#39; int&#39;
答案 0 :(得分:0)
您的问题是int tolower(int ch);
将int
或char
作为参数。但是,您传递的是std::string
。
for(std::string& x: lower)
{
transform(x.begin(), x.end(), x.begin(), [](unsigned char c) { return std::tolower(c);});
to_low.insert(x);
}
如果您将最后一行更改为上述循环,它会将std::set<std::string> lower
中的每个字符串逐字符转换为小写字符串,并将其插入std::set<std::string> to_low
希望这有帮助!