如何读取名称的字符数组,而不读取空格?

时间:2015-10-08 00:04:12

标签: c++ arrays

我是C ++的新手,我有一个最大大小为30的动态字符数组。我需要将数组中的名称提取为字符串,但我无法知道名称的长度。

例如,名为Bob的人应该看起来像:   Bob____________________(_是空格)

但它反映如下:    Bob%#$ (% $#)%@#*#@ $$#

或类似的东西。我知道这样做是因为它只是随机未分配的内存,但我怎么能在bob的末尾切断它以便我可以手动添加空格?

如果我不清楚我正在使用一个完全运行30次的for循环逐个字符地读取字母。

这是我目前的循环

char infilename[50];
char outfilename[50];

int main(int argc, const char* argv[]){

    if(argc == 3)
    {
        strcpy (infilename,argv[1]);
        strcpy (outfilename,argv[2]);
    }
    else
    {
            //do something else
    }
    return 0;
}

在这种情况下,n应该等于“Bob ___________________”

但是鲍勃和前面提到的一堆随机垃圾。

1 个答案:

答案 0 :(得分:0)

如果你从一个char数组中读取这个caracters,那么你可以做一个C字符串(它应该是一个空终止的字符串' \ 0')。

n = std::string(name)

并且可以添加你想要字符串中的空格的时间。在我的代码中,我想要一个包含名称的30个字符。所以它可能就像那样。

if(n.size() < 30)
    n = n + std::string(30-n.size(), ' ');