将字符追加到字符串中



我有两个字符,我想创建一个连接它们的字符串:

char a = '1';
char b = '2';
string s = "(" + a + "," + b + ")";

实现这一点最简单的方法是什么?由于第一个元素"("是一个字符串,通过从左到右连接元素,它应该可以工作,因为每个字符都将被铸造成一个字符串并附加。

然而编译器似乎并不喜欢它

error: invalid operands of types 'const char*' and 'const char [2]' to binary 'operator+'

我怎样才能做到这一点?

"("不是std::string。它是一个char[2]C字符串数组。使用s文字将其设为std::string

using namespace std::string_literals;
std::string s = "("s + a + ","s + b + ")"s;

如果你尝试这样做,这仍然可能失败:

std::string s = a + b + "."s; // error

在这种情况下,您可以简单地从一个空字符串开始:

std::string s = ""s + a + b + "."s;

另一种选择是使用std::ostringstream构建字符串:

std::ostringstream oss;
oss << "(" << a << "," << b << ")";
std::string s3 = oss.str();

您可以直接编写

char a = '1';
char b = '2';
std::string s = std::string( "(" ) + a + "," + b + ")";

char a = '1';
char b = '2';
string s;
for ( char c : { '(', a, ',', b, ')' } )
{
s += c;
}

这是一个示范节目。

#include <iostream>
#include <string>
int main() 
{
char a = '1';
char b = '2';
std::string s = std::string( "(" ) + a + "," + b + ")";
std::cout << "s = " << s << 'n';
std::string t;
for ( char c : { '(', a, ',', b, ')' } )
{
t += c;
}
std::cout << "t = " << t << 'n';
return 0;
}

程序输出为

s = (1,2)
t = (1,2)

或者你可以只使用像这样的构造函数

std::string s( { '(', a, ',', b, ')' } );

或分配的方法

std::string s;
s.assign( { '(', a, ',', b, ')' } );

或附加

std::string s;
s.append( { '(', a, ',', b, ')' } );

这是另一个示范节目。

#include <iostream>
#include <string>
int main() 
{
char a = '1';
char b = '2';
std::string s1( { '(', a, ',', b, ')' } );
std::cout << "s1 = " << s1 << 'n';
std::string s2;
s2.assign( { '(', a, ',', b, ')' } );
std::cout << "s2 = " << s2 << 'n';
std::string s3( "The pair is " );
s3.append( { '(', a, ',', b, ')' } );
std::cout << "s3 = " << s3 << 'n';
return 0;
}

其输出为

s1 = (1,2)
s2 = (1,2)
s3 = The pair is (1,2)

最新更新