繁体   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