在for循环中打印字符c ++

时间:2017-11-15 21:28:27

标签: c++ char string-literals

这是一个非常基本的问题,因为我是C ++语言的新手,但我有一个程序,它采用函数在for循环中打印单个字符。我的代码如下所示:

void printBar(const char symbol, int count){
    for (int i = 0;i <= count; i++){
        cout << symbol;
    }
}

我的主要功能是:

int main(){
    int size = 8;
    const char* sym = "*":
    printBar(sym,size);

我希望我的结果看起来像这样:

********

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

对于初学者来说有一个拼写错误

const char* sym = "*":
                    ^^^

应该有分号。

函数中的循环应该看起来像

void printBar(const char symbol, int count){
    for (int i = 0; i < count; i++){
                    ^^^^^^^^^
        cout << symbol;
    }
}

可以删除第一个参数声明中的限定符const。

void printBar(char symbol, int count){

如果变量sym声明为

const char* sym = "*":

然后应该像

一样调用该函数
printBar(*sym,size);

printBar(sym[0],size);

你只需要将一个字符而不是指针传递给函数。

编写函数的另一种方法可以看作是在演示程序中显示的

#include <iostream>
#include <iomanip>

std::ostream & printBar( char symbol, size_t count, std::ostream &os = std::cout )
{
    if ( count )
    {
        os << std::setw( count ) << std::setfill( symbol ) << symbol; 
    }

    return os;
}

int main() 
{
    size_t size = 8;
    const char *sym = "*";

    printBar( *sym, size ) << std::endl;    

    return 0;
}

它的输出是

********

答案 1 :(得分:2)

你应该说什么是疯子。错误,输出错误......但我可以猜测

首先这个循环是错误的

void printBar(const char symbol, int count){
    for (int i = 0;i <= count; i++){
        cout << symbol;
    }
}

它会打印一个太多的char。你应该有i < count

其次你的函数需要一个char,但你传入一个char *

这样做

int main(){

int size = 8;
const char sym = '*':
printBar(sym,size);