2015-10-14 37 views
0

我有一个函数,目前不会做任何事情,因为我发送的参数没有值的char数组。我可以在函数前面写出数据并获得预期的输出,但是如果我在函数中写出来,即使这是我做的第一件事,也不会出现。当发送到函数时char数组/字符串为空

我首先写出字符串,然后将其转换为char数组。我也试着用普通的字符串作为参数,结果相同。

std::cout << block; 
block = this->removeNullCharacters(block.c_str()); 

第一COUT的输出是: “0 /”

下面的函数的输出是什么。在控制台中什么也没有显示出来。

std::string FileSystem::removeNullCharacters(const char * input){ 
    std::string out = ""; 
    for(int i = 0; i < 512; ++i){ 
     std::cout << i << ": " << input[i]; 

     /*if(input[i] == '\0'){ 
      return out; 
     } 
     else{ 
      out += input[i]; 
     }*/ 
    } 
    return out; 
} 
+0

尝试使用DDD观看输入值...无论如何,我想方法block.c_str()没有返回 – Izuel

+0

@ 101010这不是我有问题的返回值。 std :: cout在函数中。输入[i]中没有任何内容。 –

+0

@Izuel你说得对,block.c_str()没有返回任何内容,所以我改变为字符串作为输入,现在我得到了字符串中的一些地方,我填充和奇怪。如果我试图写出整个字符串,我什么都看不到。 –

回答

0

根本不清楚你试图达到的目标,换句话说,你的问题并不完整。

input是指向char并指向chararray一个s大小的的第一个元素512

out是一个空字符串,并在函数的末尾返回。

block是精神分裂症,指向charstd::string在同一时间我猜。你需要真正解决这个问题。

试试这个。我想你想要传递一个指向函数序列的指针,并将每个char连接到string,直到序列结束(由\0终止)。完全忘记大小,并简单地使用空终止作为循环条件。

std::string FileSystem::removeNullCharacters(const char * input){ 
    std::string out = ""; 
    for(int i = 0; input[i] != '\0'; ++i){ 
     std::cout << i << ": " << input[i]; 
     out += input[i]; 
    } 
    return out; 
} 

但你得确保你在char秒的阵列或一个有效的指针char(这是char个序列的开始和最后一个元素是\0)通过。