逐字符读取字符串到函数中

时间:2019-04-09 20:57:51

标签: c++

我不确定我是否朝着正确的方向前进。该功能有效。我以为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]);
}

4 个答案:

答案 0 :(得分:0)

您有一些不匹配的数据类型。

首先,cout << bear(word[i]);告诉cout输出bear()的返回值,但是bear()是一个无效函数!它没有回报。您只想在for循环中说bear(blah),因为调用该函数将在函数本身内部进行cout调用。

第二,word的类型为stringbear()期望使用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);
}