Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;从char数组元素创建字符串?_C++_String_Char - Fatal编程技术网

C++ C++;从char数组元素创建字符串?

C++ C++;从char数组元素创建字符串?,c++,string,char,C++,String,Char,我有一个非常大的char数组,我遍历这个数组。我寻找具有逻辑的模式,例如: if (array[n] == 'x' and array[n+1] == 'y' and array[n+2] == 'z') { mystring = array[n+4] + array[n+5]; } 如果数组[n+4]是“4”,而数组[n+5]是“5”,则mystring=“45” 然而,mystring始终是“”,我做错了什么?我不想使用子字符串,因为数组太大。我只想将字符强制转换为字符串,然后附加

我有一个非常大的char数组,我遍历这个数组。我寻找具有逻辑的模式,例如:

if (array[n] == 'x' and array[n+1] == 'y' and array[n+2] == 'z')
{
    mystring = array[n+4] + array[n+5];
}
如果数组[n+4]是“4”,而数组[n+5]是“5”,则mystring=“45”


然而,mystring始终是“”,我做错了什么?我不想使用子字符串,因为数组太大。我只想将字符强制转换为字符串,然后附加到mystring。

您可以将字符强制转换为int,反之亦然,因为它们是基本语言类型。字符串是作为类实现的,因此您需要为两个字符调用字符串构造函数,然后将两个结果字符串连接到mystring中。您可以将字符强制转换为int,反之亦然,因为它们是基本语言类型。字符串是作为类实现的,因此您需要为两个字符调用字符串构造函数,然后将两个结果字符串连接到mystring中。如果您要检查连续出现的
“xyz”
,为什么不直接使用
std::string

std::string s(array);

size_t i =s.find("xyz");
if(i!=std::string::npos && i+5 <= s.size())
{
    std::string mystring = std::string(1,array[i + 4]) + array[i + 5];
    std::cout<<mystring;
}
std::字符串s(数组);
尺寸i=s.find(“xyz”);

如果(i!=std::string::npos&&i+5您正在检查连续出现的
“xyz”
,为什么不直接使用
std::string

std::string s(array);

size_t i =s.find("xyz");
if(i!=std::string::npos && i+5 <= s.size())
{
    std::string mystring = std::string(1,array[i + 4]) + array[i + 5];
    std::cout<<mystring;
}
std::字符串s(数组);
尺寸i=s.find(“xyz”);

如果(i!=std::string::npos&&i+5如果您首先不能使用@P0W建议的
std::string
(这是一个很好的建议),那么还有另一种不涉及字符串构造函数的转换方法(我认为使用字符串构造函数的解决方案是一个很好的解决方案,但是了解不同的方法可以给您带来更多的灵活性),但是依赖于std::string::append

int main ()
{
    // create char
    char *str1 = new char[6];
    strcpy( str1,"hello ");
    char *str2 = new char[5];
    strcpy(str2, "world" );

    // use of append to convert to a string
    std::string mystring;
    mystring.append(str1);
    mystring.append(str2);
    std::cout << mystring << std::endl;
}
int main()
{
//创建字符
char*str1=新字符[6];
strcpy(str1,“你好”);
char*str2=新字符[5];
strcpy(str2,“世界”);
//使用append转换为字符串
std::string mystring;
mystring.append(str1);
mystring.append(str2);

std::cout如果您不能像@P0W(这是一个很好的建议)所建议的那样首先使用
std::string
,那么还有另一种不涉及字符串构造函数的转换方法(我认为使用字符串构造函数的解决方案是一种很好的方法,但是了解不同的方法可以给您更多的灵活性),但依赖于std::string::append

int main ()
{
    // create char
    char *str1 = new char[6];
    strcpy( str1,"hello ");
    char *str2 = new char[5];
    strcpy(str2, "world" );

    // use of append to convert to a string
    std::string mystring;
    mystring.append(str1);
    mystring.append(str2);
    std::cout << mystring << std::endl;
}
int main()
{
//创建字符
char*str1=新字符[6];
strcpy(str1,“你好”);
char*str2=新字符[5];
strcpy(str2,“世界”);
//使用append转换为字符串
std::string mystring;
mystring.append(str1);
mystring.append(str2);

在C++中添加字符串不是这样的。更简单的方法是创建一个<代码> String Strue并将字符添加到字符串中,使用“

”,添加字符串在C++中不起作用。更简单的方法是创建一个<代码> String Strue并将字符添加到字符串WI中。我建议使用assign(const char*,len); 不涉及复制构造函数

if (array[n] == 'x' and array[n+1] == 'y' and array[n+2] == 'z')
{
   mystring.assign(array + n + 4, 2);
}
我建议使用assign(const char*,len); 不涉及复制构造函数

if (array[n] == 'x' and array[n+1] == 'y' and array[n+2] == 'z')
{
   mystring.assign(array + n + 4, 2);
}

您考虑过使用streams吗?@Borgleader
myString=std::string(array[n+4])+array[n+5]
作为更短的变体。@H2CO3
std::string myString=std::string(1,array[i+4])+array[i+5];
因为没有一个构造函数只接受
char
array[n+4]+array[n+5]
不会像你想象的那样做。它将两个字符作为ASCII值,并将它们相加以创建一个新的单个字符。它不会创建两个字符串联在一起的新字符串。你考虑过使用streams吗?@Borgeader
myString=std::string(数组[n+4])+array[n+5]
用于更短的变量。@H2CO3
std::string mystring=std::string(1,数组[i+4])+array[i+5];
因为没有一个构造函数只接受
char
数组[n+4]+array[n+5]
不会做您认为它会做的事情。它将两个字符作为ASCII值,并将它们相加以创建一个新的单个字符。它不会创建两个字符串联在一起的新字符串。std::string::append mimic“adding characters”,它比stringstream更简单,不?std::string::append mimic“adding characters”它比stringstream更简单,不是吗?我不知道这是如何从一个大的字符数组中提取字符并将它们“粘合”在一起以创建一个字符串的?mystring.append(数组[n+4]);mystring.append(数组[n+5])或mystring.append(数组[n+4],2)我不知道这是如何从一个大的字符数组中提取字符并“粘合”它们的一起创建字符串?mystring.append(数组[n+4]);mystring.append(数组[n+5])或mystring.append(数组[n+4],2)