Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算C+中字符总长度的函数是什么+; 我对C++中字符的总长度的函数有疑问。我发现这个函数: len = strlen(str1);_C++_Xcode - Fatal编程技术网

计算C+中字符总长度的函数是什么+; 我对C++中字符的总长度的函数有疑问。我发现这个函数: len = strlen(str1);

计算C+中字符总长度的函数是什么+; 我对C++中字符的总长度的函数有疑问。我发现这个函数: len = strlen(str1);,c++,xcode,C++,Xcode,然而,当我在Xcode中尝试它时,Xcode给了我一个黄色的三角形,表示有错误或遗漏。见下图 那么,有人能帮我找到计算总长度的合适函数吗?您尝试调用的函数在cstring(和string.h)中声明,因此您需要 #include <cstring> #包括 但是如果您使用Objective++,请使用std::string类而不是char数组。尝试这样的赋值 size_t len; 而不是 int len; 当strlen返回一个无符号long(size_t)时,将

然而,当我在Xcode中尝试它时,Xcode给了我一个黄色的三角形,表示有错误或遗漏。见下图


那么,有人能帮我找到计算总长度的合适函数吗?

您尝试调用的函数在
cstring
(和
string.h
)中声明,因此您需要

#include <cstring>
#包括

但是如果您使用Objective++,请使用
std::string
类而不是
char
数组。

尝试这样的赋值

size_t len;
而不是

int len;    

当strlen返回一个无符号long(size_t)时,将其放入一个int变量。第一个问题是,无符号long可能是一个非常大的数字。比int大很多。第二个问题是它是无符号的,而int不是。字符串的长度不能为负数,因此也可以安全地取消签名。无符号表示最后一位不会指定负或非负状态

例1:

#include <iostream> //for cout
#include <cstring>   //for strlen()

using namespace std;  //so we don't have to type std:: all the time

int main(){
    char str1 = "Hello, World!";
    unsigned long myLength = strlen(str1); // size_t myLength = strlen(str1) would work
    cout << "String length: " << myLength << endl;
}
#包括//for cout
#包括//用于strlen()
使用名称空间std//所以我们不必一直输入std::
int main(){
char str1=“你好,世界!”;
无符号长myLength=strlen(str1);//size\u t myLength=strlen(str1)可以工作

无法将
len
更改为type
size\u t
此警告与
strlen
本身无关。它与您对结果所做的操作有关。
strlen
返回类型为
std::size\u t
的值。将其分配给类型为
int
的变量可能会导致溢出(对于非常大的字符串)。可以通过显式强制转换值来克服此警告:
len=static_cast(strlen(str1));
。请注意,
strcat(str1,str2);
调用未定义的行为,因为
str1
不够大,无法容纳结果(结果字符串长度为11个字符,包括终止的零)。在此处提问之前,请至少尝试阅读并理解诊断消息。发布问题(或答案)时,请,发布代码,而不是sreenshot。然后看起来您有一个警告,因为您将无符号的
strlen
结果分配给有符号的
int
变量。请使用
size\u t
而不是
int
。其中没有
strlen
,谢谢您的更正。
#include <iostream> //for cout
#include <string> 

using namespace std;  //so we don't have to type std:: all the time

int main(){
    string myString("Hello, World!");
    size_t myLength = myString.length(); // see length() in string, it also returns size_t
    cout << "String length: " << myLength << endl;
}