2012-11-26 171 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