Closed. This question is not reproducible or was caused by typos 。它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic。
5年前关闭。
Improve this question
我看过很多这些,但似乎没有一个与我的问题相对应。这个程序在本地运行良好,但在它需要运行的服务器上我遇到了错误。
project1.cpp:在函数‘void insertwords(char*)’中:
project1.cpp:54:65: 错误: 'transform' 未在此范围内声明
变换(word.begin(),word.end(),word.begin(),::tolower);
相关代码:
包括:
我知道使用命名空间 std;是不好的做法,但我被告知要为该项目
想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic。
5年前关闭。
Improve this question
我看过很多这些,但似乎没有一个与我的问题相对应。这个程序在本地运行良好,但在它需要运行的服务器上我遇到了错误。
project1.cpp:在函数‘void insertwords(char*)’中:
project1.cpp:54:65: 错误: 'transform' 未在此范围内声明
变换(word.begin(),word.end(),word.begin(),::tolower);
相关代码:
void insertwords(char *filename) {
ifstream fin;
fin.open(filename);
if(fin.fail())
{
cerr << "File opening failed. Exiting program.\n";
exit (-1);
}
string word;
int count = 0;
while (!fin.eof() ) {
word.clear();
fin >> word;
transform(word.begin(), word.end(), word.begin(), ::tolower);
for (int i = 0, len = word.size(); i < len; i++)
{
if(ispunct(word[i]))
word.erase(i--, 1);
len = word.size();
}
if(!word.empty()) {
insert_word(word);
++count;
}
}
cout << "The number of words found in the file was " << count << "\n";
fin.close();
}
包括:
#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
#include <locale>
using namespace std;
我知道使用命名空间 std;是不好的做法,但我被告知要为该项目
最佳答案
您需要 #include <algorithm>
这是 std::transform
来自的 header 。
至于为什么它会在一台机器上编译而不是在另一台机器上编译,我的猜测是您的其他头文件之一(例如 <string>
)在其中一个编译器实现中包含 <algorithm>
所以您很幸运,但对于其他编译器则不然。
关于未在作用域中声明的 C++ 转换仅发生在服务器上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32408521/
10-13 06:44