输入一个字符串(可能包含空格,长度不超过20),输出该串的长度。 输入格式: 输入在一行中给出1个长度不超过20的字符串s。 输出格式: 在一行中输出s的串长。 输入样例: welcome to acm world 输出样例: 20 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C++ (g++)
理解问题输入一个字符串(可能包含空格,长度不超过20),输出该串的长度。 输入格式: 输入在一行中给出1个长度不超过20的字符串s。 输出格式: 在一行中输出s的串长。 输入样例: welcome to acm world 输出样例: 20 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C++ (g++)
已完成理解「输入一个字符串(可能包含空格,长度不超过20),输出该串的长度。 输入格式: 输入在一行中给出1个长度不超过20的字符串s。 输出格式: 在一行中输出s的串长。 输入样例: welcome to acm world 输出样例: 20 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C++ (g++)」
展开阅读网页
在C++中,计算字符串长度是一个常见的任务,可以通过不同的方法实现,具体取决于字符串的类型。以下是几种计算字符串长度的方法:
1. 对于C++标准库中的std::string
类型
如果你使用的是std::string
类型,可以直接使用其length()
或size()
成员函数来获取字符串的长度。这两个函数在std::string
类中是等价的,都返回字符串中字符的数量,不包括结尾的空字符('\0'
)。
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::cout << "Length of str: " << str.length() << std::endl;
return 0;
}
2. 对于C风格的字符串(字符数组)
对于C风格的字符串,即以空字符'\0'
结尾的字符数组,可以使用strlen()
函数来计算长度。这个函数会遍历字符串直到遇到空字符,返回的是不包括空字符在内的字符数量。
#include <cstring>
#include <iostream>
int main() {
const char* cstr = "Hello, World!";
std::cout << "Length of cstr: " << strlen(cstr) << std::endl;
return 0;
}
3. 使用sizeof
运算符
对于非动态分配的字符数组,可以使用sizeof
运算符来获取整个数组的大小,这包括了字符串中的所有字符以及结尾的空字符。但是,这种方法不适用于动态分配的内存或std::string
对象。
#include <iostream>
int main() {
char str[] = "Hello";
std::cout << "Size of str: " << sizeof(str) / sizeof(char) << std::endl;
return 0;
}
4. 对于宽字符和std::wstring
对于宽字符字符串(如std::wstring
),可以使用相同的方法来计算长度,但需要注意编码和平台的差异可能会影响长度计算。
注意事项
strlen()
函数只适用于C风格的字符串,不适用于std::string
。sizeof
运算符返回的是整个数组或对象占用的字节数,而不是字符数,除非是字符数组。- 对于动态分配的字符串或
std::string
对象,sizeof
不会返回字符串的实际长度,因为它们可能包含额外的未使用空间。
在实际编程中,选择哪种方法取决于你的具体需求和字符串的类型。对于现代C++编程,推荐使用std::string
和其length()
或size()
函数,因为它们更安全且易于使用。