2011-06-27 27 views
2

我在C++中。我試圖將一個char數組附加到C++字符串中。唯一的一點是,這個數組可以有所有可能的值,負數,正數和0.因此,當我將這個數組賦值給字符串時,它會在某個點停止,因爲它找到了一個0值。
1)可以字符串追加這些值嗎?或者他們必須嚴格從1到127? 如果爲真,
2)有沒有辦法保持字符串分配,即使它發現0?如何分配char *(帶有每個可能的值)到C++字符串

+1

爲什麼首先使用'std :: string'?一個'矢量'會更適合。 –

+0

字符串有比較功能。我需要它。即使如果將-125值字符與5值字符進行比較。 -125應該小於5. – Erandros

+0

邁克爾伯爾的答案應該做你想做的,但我很想知道你目前正在試圖做到這一點(找出爲什麼它停在'\ 0'爲你)。同樣在回答你的第一個問題時,std :: string可以包含(我相信)任何字符,包括'\ 0'。 – icabod

回答

6

string::append(const char* s, size_t n)過載append()應該做你想做的。假設cpp_string是您的std::string變量或參考和c_string_ptr是您的指針字符數組:

cpp_string.append(c_string_ptr, number_of_bytes); 

注意然而,std::stringstd::basic_string<char>一個typedef。由於char可能未在您的平臺上簽名,因此您可能無法獲得所需的比較行爲。您應該確保char是你的平臺上簽字或者你可能想用自己的typedef,以防止問題,如果平臺(或建造)的變化在未來:

typedef std::basic_string<signed char> sstring; // or whatever name you like 
2

使用string::append()功能。

代碼示例:

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string str2="My String"; 

    str.append("is nice",7); 

    cout << str << endl; 
    return 0; 
} 

有沒有辦法讓字符串賦值會甚至,即使它找到一個0?
字符數組以null結尾,並使用0來確定數組的結尾。
std :: string不使用0來確定字符串的結尾。

1

您可以使用以下功能:

串&追加(爲const char * S,爲size_t n)的;

string & append(const char * s);

第一個將附加char *,直到它達到大小,第二個將追加,直到它找到一個\0 int字符串。

所以你可以使用第一個字符的任何值,但你必須小心第二個,因爲(char)0將終止附加。

請參閱:http://www.cplusplus.com/reference/string/string/append/

相關問題