C++ 中的字符串
Cstrings in C++
为什么这段代码输出错误??输出是5和9,不应该是5和4吗。
这是代码
int main
{
char a[10] ={'a','b','c','d','e'};
char c[] = {'q','t','y','t'};
cout<<strlen(c)<<endl<<strlen(a);
return 0;
}
您有未定义的行为,因为您调用 strlen
时使用的指针指向不是 null-terminated (c
) 的字符数组。您需要传递 null-terminated 字符串才能正常工作。这是一个示例,修复了该错误和其他一些错误,并包括所需的 headers:
#include <iostream> // std:cout, std::endl
#include <cstring> // std::strlen
int main()
{
char a[10] ={'a','b','c','d','e'}; // OK, all remaining elements
// initialized to '[=10=]'.
// Alternative: char a[10] = "abcde"
char c[] = {'q','t','y','t', '[=10=]'}; // or char c[] = "qtyt";
std::cout << std::strlen(c) << std::endl;
std::cout << std::strlen(a) << std::endl;
}
c
末尾需要一个空字符,strlen
才能工作。
您可以使用
char c[N] = {'q','t','y','t'};
其中 N
等于或大于 5。
或
char c[] = {'q','t','y','t', '[=11=]'};
或
char c[] = "qtyt";
在c
末尾添加一个空字符。
为什么这段代码输出错误??输出是5和9,不应该是5和4吗。 这是代码
int main
{
char a[10] ={'a','b','c','d','e'};
char c[] = {'q','t','y','t'};
cout<<strlen(c)<<endl<<strlen(a);
return 0;
}
您有未定义的行为,因为您调用 strlen
时使用的指针指向不是 null-terminated (c
) 的字符数组。您需要传递 null-terminated 字符串才能正常工作。这是一个示例,修复了该错误和其他一些错误,并包括所需的 headers:
#include <iostream> // std:cout, std::endl
#include <cstring> // std::strlen
int main()
{
char a[10] ={'a','b','c','d','e'}; // OK, all remaining elements
// initialized to '[=10=]'.
// Alternative: char a[10] = "abcde"
char c[] = {'q','t','y','t', '[=10=]'}; // or char c[] = "qtyt";
std::cout << std::strlen(c) << std::endl;
std::cout << std::strlen(a) << std::endl;
}
c
末尾需要一个空字符,strlen
才能工作。
您可以使用
char c[N] = {'q','t','y','t'};
其中 N
等于或大于 5。
或
char c[] = {'q','t','y','t', '[=11=]'};
或
char c[] = "qtyt";
在c
末尾添加一个空字符。