我在C++中。我試圖將一個char數組附加到C++字符串中。唯一的一點是,這個數組可以有所有可能的值,負數,正數和0.因此,當我將這個數組賦值給字符串時,它會在某個點停止,因爲它找到了一個0值。
1)可以字符串追加這些值嗎?或者他們必須嚴格從1到127? 如果爲真,
2)有沒有辦法保持字符串分配,即使它發現0?如何分配char *(帶有每個可能的值)到C++字符串
2
A
回答
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::string
爲std::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/
相關問題
- 1. 串字符被分配到一個char
- 2. 如何將char分配給字符串?
- 3. Java的匹配字符串值,枚舉,有多個字符串匹配的可能性每個枚舉值
- 4. 如何分割字符串有多個char ||在C#
- 5. 將動態分配的char *字符串複製到新的char *字符串中
- 6. 運行C中每個可能的字符串值?
- 7. 如何使用C分配char *值到char使用C
- 8. ++如何分配字符串爲char * PW在C
- 9. 如何將鍵分配給字符串中的每個字符?
- 10. 如何拆分字符串併爲字符串的每個單獨字符分配一個int值?
- 11. 將字符串文字分配給char *
- 12. 使用帶有char的字符串strcpy?
- 13. 如何將字符串分配到char *指針?
- 14. 如何在C++中分配類型char(不是字符串)時轉義字符
- 15. 如何將3個值分配到單個字符串中
- 16. 字符串char - C++
- 17. 在C中有多個Char的分割字符串
- 18. 爲什麼char * c可以用一個沒有分配或引用的字符串賦值?
- 19. 如何在c#中爲字符串變量賦一個char值
- 20. 帶有多個字符串和字符的C/C++二進制文件讀取
- 21. 字符串返回可能帶有.find()的子字符串
- 22. 「hello world」字符串文字可以分配給char *類型嗎?
- 23. C++字符的ASCII值到字符串
- 24. 如何將帶分割字符串的列表轉換爲可能的值集?
- 25. C字符串到寬C字符串分配
- 26. Matlab的分配值到字符串
- 27. C#如何分隔字符串列表並將每個值添加到其自己的字符串屬性
- 28. 如何比較兩個分隔字符串中的每個值?
- 29. 如何解析帶有小數點分隔符的字符串到雙c#中?
- 30. strcpy C++不能從字符串char *
爲什麼首先使用'std :: string'?一個'矢量'會更適合。 –
字符串有比較功能。我需要它。即使如果將-125值字符與5值字符進行比較。 -125應該小於5. – Erandros
邁克爾伯爾的答案應該做你想做的,但我很想知道你目前正在試圖做到這一點(找出爲什麼它停在'\ 0'爲你)。同樣在回答你的第一個問題時,std :: string可以包含(我相信)任何字符,包括'\ 0'。 – icabod