[英]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::string
是std::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.