如何将char*(每个可能的值)分配给C++;一串 我是C++的。我试图把一个字符数组附加到C++字符串中。唯一的问题是这个数组可以有所有可能的值,负数、正数和0。因此,当我将此数组分配给字符串时,它会在某个点停止,因为它找到了一个0值。 1) 字符串可以附加这些值吗?或者它们必须严格地从1到127? 如果为true, 2) 即使找到0,是否有办法保持字符串赋值继续?
对于如何将char*(每个可能的值)分配给C++;一串 我是C++的。我试图把一个字符数组附加到C++字符串中。唯一的问题是这个数组可以有所有可能的值,负数、正数和0。因此,当我将此数组分配给字符串时,它会在某个点停止,因为它找到了一个0值。 1) 字符串可以附加这些值吗?或者它们必须严格地从1到127? 如果为true, 2) 即使找到0,是否有办法保持字符串赋值继续?,c++,string,char,C++,String,Char,对于append()的string::append(const char*s,size\t n)重载应该满足您的要求。假设cpp\u string是您的std::string变量或引用,而c\u string\u ptr是指向字符数组的指针: cpp_string.append( c_string_ptr, number_of_bytes); 但是请注意,std::string是std::basic_string的类型定义。由于char可能未在您的平台上签名,因此您可能无法获得所需的比较行为。
append()
的string::append(const char*s,size\t n)
重载应该满足您的要求。假设cpp\u string
是您的std::string
变量或引用,而c\u string\u ptr
是指向字符数组的指针:
cpp_string.append( c_string_ptr, number_of_bytes);
但是请注意,std::string
是std::basic_string
的类型定义。由于char
可能未在您的平台上签名,因此您可能无法获得所需的比较行为。您应该确保char
已在您的平台上签名,或者您可能希望使用自己的typedef来防止将来平台(或构建)发生更改时出现问题:
typedef std::basic_string<signed char> sstring; // or whatever name you like
typedef std::basic_string sstring;//或者随便你叫什么名字
使用功能
代码示例:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str2="My String";
str.append("is nice",7);
cout << str << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
string str2=“我的字符串”;
str.append(“很好”,7);
cout您可以使用以下功能:
字符串和附加(常量字符*s,大小\u t n)
字符串和附加(常量字符*s)
第一个将用char*追加,直到达到大小,第二个将追加,直到在字符串中找到一个\0
因此,您可以将第一个值与chars的任何值一起使用,但必须注意第二个值,因为(char)0将终止追加
请参阅:为什么首先使用std::string
呢?向量更合适。字符串有比较功能。我需要它。即使将-125值字符与5值字符进行比较,-125应该小于5。Michael Burr的答案应该满足您的要求,但我很想知道您的最新情况我正在尝试这样做(为您找出它停在\0
的原因)。同样在回答您的第一个问题时,std::string可以包含(我相信)任何字符,包括\0
。如果需要,您还可以使用向量上的
功能。可能的重复