C++ String转为Char数组

我遇到的题目

【问题描述】编写程序,输入字符串,统计英文字母、数字字符及其他字符的个数。

【输入形式】一个字符串

【输出形式】三个数,之间用空格隔开

【样例输入】abc129++*ABC

【样例输出】6 3 3

【样例说明】字符串“abc129++*ABC”中英文字母的个数是6,数字字符的个数是3,其他字符的个数是3。

我的想法

  1. 输入一个String的字符串,用String.Size()获取其长度,然后在内存中定义数组。
  2. 将字符串里每个字符通过内存分配的方式转换为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>
后正常

评论

  1. 头像
    enjoy
    Android Chrome 71.0.3578.141

    test

    9月前
    2019-11-18 7:04:07
    • 头像
      米娅(2525)
      Android Chrome 71.0.3578.141

      憨憨666

      9月前
      2019-11-29 7:31:13
  2. 头像
    司令
    Android Chrome 66.0.3359.126

    过来踩踩

    9月前
    2019-11-26 12:26:49

发送评论 编辑评论


				
上一篇
下一篇