使用某些功能和我的计算机/ NetBeans似乎无法运行我的代码,即使它可以在不同的编译器中运行。这是我的功能(请记住,这不是我的整个项目,我有一个int main()):
#include <iostream>
#include <iomanip>
#include <string>
#include <iterator>
#include <cstdlib>
#include <ctime>
#include <windows.h>
using namespace std;
void convert (string& s){ //Creating a function that makes a variable lower case
for(int i=0; i<s.length(); i++){
s[i] = tolower(s[i]); //tolower lets me change to lower case
}
}
我得到的错误是:“无法解析标识符长度”。如果你需要看看我的整个项目,请问,我不介意,只是觉得浪费时间,如果没关系。我正在使用NetBeans 8.2,提前感谢
答案 0 :(得分:1)
您可以尝试使用size()
代替length()
。对于C ++中的string
,它们之间没有显着差异,但size()
也用于其他STL容器,如map
,vector
等。通常,人们使用size()
函数。
用法与length(),i < s.size()
答案 1 :(得分:1)
看起来std :: string的实现省略了函数length();顺便说一下,它不会返回int,所以你应该得到一张警告票。将来,请发布一个完整的程序,包括main()。
解决旧方法;
#include <string>
void convert(std::string& s) { //Creating a function that makes a variable lower case
const size_t sz = s.size();
for (size_t i = 0; i<sz; ++i) {
s[i] = tolower(s[i]); //tolower lets me change to lower case
}
}
int main() {
std::string s("AbCdEf");
convert(s);
return 0;
}
Newfangled way ...
#include <string>
void convert(std::string& s) { //Creating a function that makes a variable lower case
for (char &ch : s) {
ch = tolower(ch); //tolower lets me change to lower case
}
}
int main() {
std::string s("AbCdEf");
convert(s);
return 0;
}
甚至是新手......
#include <algorithm>
void convert(std::string& s) { //Creating a function that makes a variable lower case
std::transform(std::begin(s), std::end(s), std::begin(s), ::tolower);
}