2012-11-26 173 views
6

我有256个字符或char myArray[256]字符数组只有第一对夫妇的实际持有的任何信息追加字符数组字符串C++

myArray[0] = 'H'; 
myArray[1] = 'E'; 
myArray[2] = 'L'; 
myArray[3] = 'L'; 
myArray[4] = 'O'; 
myArray[5] = NULL; 
myArray[6] = NULL; 
// etc... 

我不一定会确切地知道什么是阵中,但我想复制的内容是存在的,减去空字符,我的字符串缓冲区string buffer

我认为合适的方式来做到这一点是通过执行以下操作:

buffer.append(myArray); 

该程序会停止读取值,一旦遇到一个空字符,但我没有看到这种行为。我看到它将整个数组复制到我的缓冲区,空字符和全部。什么是正确的方法来做到这一点?

编辑:一些工作的代码,使其更容易

#include <string> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    string buffer; 
    char mychararray[256] = {NULL}; 

    mychararray[0] = 'H'; 
    mychararray[1] = 'e'; 
    mychararray[2] = 'l'; 
    mychararray[3] = 'l'; 
    mychararray[4] = 'o'; 

    buffer.append(mychararray); 

    cout << buffer << endl; 

    return 0; 
} 

刚刚意识到我是不正确初始化空和我原来的工作方式。对不起,浪费你的时间。

+2

你的“工作代码”是完全不同的。你错过了'= NULL'部分。这是什么? –

+0

@LuchianGrigore,索引4之后'mychararray'的所有值默认都不是'NULL'(这是一个真正的问题,我对C++很缺乏经验)? –

+3

@usernametbd否 - 如果您希望它们为0,则明确地将它们设置为0,或者直接执行:char mychararray [256] = {0}; –

回答

9

buffer += myArray; 

尝试应该这样做。 append也应该工作,如果你null-终止数组。

1

这应该做的工作:

int c; 
while(myArray[c] != NULL) { 
    buffer.append(1,myArray[c]); 
    ++c; 
} 

此外,你应该做这样的事情:myArray[5] = '\0'

+0

'= NULL'和'='\ 0''是等价的。 –

+0

他没有初始化数组,所以他应该这样做。 – hinafu