簡體   English   中英

如何將char *(包含所有可能的值)分配給C ++字符串

[英]How to assign char* (with every possible value) to C++ string

我是C ++。 我正在嘗試將一個char數組附加到C ++字符串。 唯一的事情是這個數組可以有每個可能的值,負數,正數和0.所以當我將這個數組賦給字符串時,它會在某個時刻停止,因為它找到了一個0值。
1)字符串可以附加這些值嗎? 或者它們必須嚴格地從1到127? 如果屬實,
2)即使找到0,有沒有辦法讓字符串賦值保持平衡?

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

使用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來確定字符串的結尾。

您可以使用以下功能:

string&append(const char * s,size_t n);

string&append(const char * s);

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM