我的电脑不接受 s.length,但其他编译器可以
my computer won't accept s.length, but other compilers do
使用某些函数,我的计算机/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容器,如map
,vector
等。所以一般来说,人们使用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);
}
相关文章:
- 与其他编译器相比,相同的代码在工作室Microsoft提供不同的输出
- msvc 编译器(和其他编译器)如何知道要绑定到哪个 std 重载?
- 为什么在某些编译器中可以声明像int myarr[noconstant]这样的数组;而不是在其他编译器中?
- 使用其他编译器编译QT代码
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- VS说"Too few arguments...",但其他编译器给了我正确的输出?
- 我的电脑不接受 s.length,但其他编译器可以
- 在其他编译器中使用_DEBUG定义,然后在Visual Studio中使用
- 为什么这C++代码使用某些编译器编译,而不能使用其他编译器编译?
- 如何在VS 2017中编译来自其他编译器的代码
- complex.h 适用于 Win32 目标以外的其他编译器,例如代码编辑器工作室 (CCS)
- 用Mac OS X上的其他编译器使用不同的编译器进行建筑提升
- 在读取 Visual C++ 中的二进制文件(而不是其他编译器)后,每隔一个字符都是 NULL
- 分段错误发生在某些编译器中,但未发生在其他编译器中
- 可视化 为什么这个C++程序在某些编译器中有效,而在其他编译器中不起作用?C ++编译器之间的主要区别是什么
- 可视化C++编译器与其他C++编译器的比较
- 使用其他c++编译器编译CUDA代码
- 使用其他编译器在C++中清除屏幕
- 从其他编译器导入dll
- 强制转换操作符函数在g++中可以很好地编译,但在其他编译器中不行.为什么