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;
}
}