我的电脑不接受 s.length,但其他编译器可以

my computer won't accept s.length, but other compilers do

本文关键字:其他 编译器 电脑 不接受 length 我的      更新时间:2023-10-16

使用某些函数,我的计算机/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,提前感谢

您可以

尝试size()而不是length()。对于C++中的string,它们之间没有显着区别,但size()也用于其他STL容器,如mapvector等。所以一般来说,人们使用size()功能。

用法与 length(( 相同,i < s.size()

看起来 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;
}

新奇的方式...

#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);
}
相关文章: