C++ Can';t调用函数C++;

C++ Can';t调用函数C++;,c++,C++,这是我为了好玩而做的一个项目,它将英语转换成摩尔斯电码 我还是个初学者,我自己学C++,所以我很抱歉如果这个问题很傻,但是我没有其他人问 问题是关于第17行的 知道为什么它不叫它重新开始吗? 代码: #包括 使用名称空间std; 字符串莫尔斯[26]{“-”、“-…”、“-.-”、“-…”、“-…”、“-”、“-”、“-”、“-”、“-”、“-”, ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-

这是我为了好玩而做的一个项目,它将英语转换成摩尔斯电码
我还是个初学者,我自己学C++,所以我很抱歉如果这个问题很傻,但是我没有其他人问 问题是关于第17行的
知道为什么它不叫它重新开始吗?
代码:

#包括
使用名称空间std;
字符串莫尔斯[26]{“-”、“-…”、“-.-”、“-…”、“-…”、“-”、“-”、“-”、“-”、“-”、“-”,
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...",
"-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
字符字母[26]{'a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'、'q'、'r'、's'、't'、'u'、'v'、'w'、'x'、'y'、'z';
void convert();
int main(){
convert();
cout>ans;
如果(ans=='y')返回0;
if(ans=='n')convert();}//第17行
无效转换(){
字符串输入;
int i=0;

cout您的代码中有几个问题,但是关于为什么程序不循环,这是因为您没有告诉它循环,您只告诉它第二次调用convert()

int main (){
    convert();  // first call
    cout << "\nExit ?(y/n)\n";
    char ans;
    cin >> ans;
    if (ans=='y') return 0;
    if (ans=='n') convert(); //line 17
    // program ends
}

同时查看
std::map
你似乎在
main()
函数内部定义
void convert()
。你必须在main之外(之前)进行定义。我想我看到了很多语法错误,我甚至没有尝试编译它。而
alphabet
morse
只有26项(索引0-25)但是你正在尝试访问索引26请帮每个人一个忙,在问题所在的行上添加一条注释,这样人们就不必计算行数了。thx人工作了,我做了很多搜索来了解它是如何工作的我搜索了很多,但我只想确定:(!quitting)是指(quitting=false)??是的,
if(quitting)
的意思是
if(quitting==true)
所以
if(!quitting)
的意思是
if(quitting==false)
(注意双相等)
int main (){
    convert();  // first call
    cout << "\nExit ?(y/n)\n";
    char ans;
    cin >> ans;
    if (ans=='y') return 0;
    if (ans=='n') convert(); //line 17
    // program ends
}
int main()
{
    bool quitting = false;

    while (!quitting)
    {
        convert();
        std::cout << "\nExit? (y/N): " << std::flush;
        std::string ans = "";
        std::getline(std::cin, ans);
        if (!ans.empty() && (ans[0] == 'y' || ans[0] == 'Y'))
            quitting = true;
    }
}