本文最后更新于 2019年11月17日 已经是 1291天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言。
我遇到的题目
【问题描述】编写程序,输入字符串,统计英文字母、数字字符及其他字符的个数。
【输入形式】一个字符串
【输出形式】三个数,之间用空格隔开
【样例输入】abc129++*ABC
【样例输出】6 3 3
【样例说明】字符串“abc129++*ABC”中英文字母的个数是6,数字字符的个数是3,其他字符的个数是3。
我的想法
- 输入一个String的字符串,用
String.Size()
获取其长度,然后在内存中定义数组。 - 将字符串里每个字符通过内存分配的方式转换为char的数组
解决方法
此处遇到了一个问题:如何将String转换为char的数组?
string word;
cin >> word;
int n = word.size();
char* a = new char[n]; //在内存中定义数组
strcpy(a, word.c_str()); //将string转化为char的数组
成功实现
完整版代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word;
cin >> word;
int n = word.size();
char* a = new char[n]; //在内存中定义数组
strcpy(a, word.c_str()); //将string转化为char的数组
int alpha = 0, math = 0, other = 0;
for (int i = 0; i < n; i++)
{
if (a[i] >= '0' && a[i] <= '9')
{
math += 1;
}
else {
if ((a[i] >= 'a' && a[i] <= 'z')||(a[i]>='A'&&a[i]<='Z'))
{
alpha += 1;
}
else {
other += 1;
}
}
}
cout << alpha << " " << math << " " << other;
}
在本地环境(VS2019)运行正常,然而学校的批改系统提示:
编译错误.
_1.cpp: In function 'int main()':
_1.cpp:10:24: error: 'strcpy' was not declared in this scope
strcpy(a, word.c_str());
^
百度后发现
在c++中,是指标准化以前的标准c库中的字char*字符串处理函数
中在1988年标准化以后,c++中含的STL的string容器
是在1988年标准化以后, 的演变。
总之记住一句话:与 是完全不同的两个东西。
#include <string>
改为
#include <string.h>
后正常
过来踩踩
test
憨憨666