我不确定我是否朝着正确的方向前进。该功能有效。我以为for
循环也可以工作,但事实并非如此。
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;
void bear(string word) {
cout << " (c).-.(c) \n";
cout << " / ._. \\ \n";
cout << " __\\( Y )/__ \n";
cout << "(_.-/'-'\\-._)\n";
cout << " || " << word << " || \n";
cout << " _.' `-' '._ \n";
cout << "(.-./`-'\\.-.) \n";
cout << " `-' `-' \n";
}
int main()
{
string word;
cout << "Input a word: ";
cin >> word;
for (int i = 0; i < word.length(); i++)
cout << bear(word[i]);
}
答案 0 :(得分:0)
您有一些不匹配的数据类型。
首先,cout << bear(word[i]);
告诉cout
输出bear()
的返回值,但是bear()
是一个无效函数!它没有回报。您只想在for循环中说bear(blah)
,因为调用该函数将在函数本身内部进行cout
调用。
第二,word
的类型为string
。 bear()
期望使用string
类型的参数。您不是通过word
,而是通过word[i]
。 word[i]
的类型是单个char
。
要解决此问题,实际上取决于您要函数执行的操作。
答案 1 :(得分:0)
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;
void bear(string word) {
cout << " (c).-.(c) \n";
cout << " / ._. \\ \n";
cout << " __\\( Y )/__ \n";
cout << "(_.-/'-'\\-._)\n";
cout << " || " << word << " || \n";
cout << " _.' `-' '._ \n";
cout << "(.-./`-'\\.-.) \n";
cout << " `-' `-' \n";
}
int main()
{
string word;
cout << "Input a word: ";
cin >> word;
for (int i = 0; i < word.length(); i++)
bear(word.substr(i, 1));
}
答案 2 :(得分:0)
for循环不起作用,因为您的功能熊没有返回任何东西。
换句话说;
您正在std :: out内部调用bear函数,这意味着需要一些数据和一些值才能输出。但是您的bear函数不会返回任何内容。您的bear函数正在执行输出。
为使for循环正常工作,只需移除cout,然后像平常一样调用bear函数。
答案 3 :(得分:0)
std::string
没有只接受单个char
作为输入的构造函数,因此您无法按照自己的方式将word[i]
传递给bear()
。
此外,您的for
循环根本没有任何意义。
摆脱循环,将完整的word
原样传递给bear()
。
此外,bear()
没有可传递给cout
的返回值,因此您也需要删除该代码。
尝试一下:
int main()
{
string word;
cout << "Input a word: ";
cin >> word;
bear(word);
}