错误C2440:'=':无法从'const char [2]'转换为'char'

num*_*l25 5 c++ visual-studio-2008

我正在学习c ++,而且我在做一些新手的事情时遇到了问题.我正在尝试创建一个非常小的应用程序,它接受用户输入并将其存储到char数组中.然后我解析该数组并删除所有括号和数据并显示它.如下

(325)858-7455至
3258587455

但我收到了错误

 error C2440: '=' : cannot convert from 'const char [2]' to 'char'
Run Code Online (Sandbox Code Playgroud)

下面是我的简单代码,可以很容易地在编译器中抛出并运行.

#include "stdafx.h"
#include<iostream>
#include<conio.h>

using namespace std;

/*
This is a template Project
*/
int main()
{
    char phoneNum[25];

    for(int i = 0; i < (sizeof(phoneNum) / sizeof(char)); i++)
    {
        phoneNum[i] = "i";
    }


    cout<< "Enter a phone Number" <<endl;
    cin>>phoneNum;

    if(phoneNum[0] != '(' || phoneNum[4] != ')' || phoneNum[8] != '-')
    {
        cout<<"error";
    }
    else
    {

        for(int i = 0; i < (sizeof(phoneNum) / sizeof(char));i++)
        {
            if(phoneNum[i] != '(' || phoneNum[i] != ')' || phoneNum[i] != '-')
            {
                cout<<phoneNum[i];
            }
        }
    }

    cin>>phoneNum;
    getchar();


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它没有完全完成,所以如果有人有关于从字符串中删除字符串字符的最佳方法的任何指针.那太好了.

Jon*_*eet 17

问题出在这里,我相信:

phoneNum[i] = "i";
Run Code Online (Sandbox Code Playgroud)

您想要分配单个字符,因此您需要为文字使用单引号:

phoneNum[i] = 'i';
Run Code Online (Sandbox Code Playgroud)

可能还有其他问题 - 我只是试图修复标题中提到的问题:)


小智 6

这里最重要的是要了解之间的差异"i"'i'.

"i"是一个字符串,字符串作为char值序列存储在内存中,在字符串的末尾附加一个空字符(假设为零).所以当你写作"hello"你正在存储'h' 'e' 'l' 'l' 'o' '(null)'.以同样的方式,当你写"i",你正在存储'i' '(null)',那就是'const char [2]'(一个2个char元素的数组).

当你使用'char数组'并使用[]运算符时,你指的'char'是该数组中的一个元素.所以当你写作时,phoneNum[i]你会得到一个'char'.

这就是你需要写作的原因 phoneNum[i] = 'i';