假设我有2个字符串变量
string str1 = "A";
string str2 = "B";
string str3;
做
str3 = str1 + str2;
能帮助我
str3 = "AB"
我的问题是,如果不是字符串类型str1和str2,而是char类型的值,是否可以以某种类似的方式进行加法运算?如果没有,有人可以建议我一些聪明的解决方法吗?
char str1 = 'A';
char str2 = 'B';
string str3; // <------ I need to get "AB" in str3 somehow
谢谢
答案 0 :(得分:4)
好的。有几种方法。几个。
#include<string>
#include<iostream>
using namespace std;
int main()
{
char str1 = 'A';
char str2 = 'B';
string str3;
//using operator+=
str3 += str1;
str3 += str2;
cout << str3 << endl;
str3.clear();
//using push_back
str3.push_back(str1);
str3.push_back(str2);
cout << str3 << endl;
str3.clear();
//using array access
str3.resize(2);
str3[0] = str1;
str3[1] = str2;
cout << str3 << endl;
return 0;
}
答案 1 :(得分:3)
是的,将char
连接到std::string
是完全可能的,您只需要其中一个操作数就是std::string
,否则就本质上是添加整数。
#include <iostream>
int main()
{
char a = 'A';
char b = 'B';
std::string str = std::string() + a + b;
return 0;
}
答案 2 :(得分:1)
可以一次性创建字符串。这也是最有效的方法:
char a = 'A';
char b = 'B';
std::string str{a, b};
std::cout << str << std::endl; // "AB"
这使用std::string
的initializer_list构造函数。
对于构造字符串(使用basic_ostream::operator<<
的任何类型的字符串)的更一般方法,可以使用stringstream
:
char a = 'A';
char b = 'B';
std::stringstream ss;
ss << a << b;
std::string str2 = ss.str();
std::cout << str2 << std::endl; // "AB"
答案 3 :(得分:-1)
有以下几种方法。
import React, { Component } from 'react';
import styles from './OrderCard.module.css';
import Order from './OderRow/Order/Order';
class OrderCard extends Component {
state = {
backgrounds: []
};
async componentDidMount() {
await Object.keys(this.props.productList).map((product, i) => {
return import(`../../assets/color/${product}.PNG`).then(picture => {
let currentBackgrounds = [...this.state.backgrounds];
currentBackgrounds[i] = picture;
this.setState({
backgrounds: currentBackgrounds
});
});
});
}
render() {
const productList = this.state.backgrounds.map((link, i) => {
return <Order key={i} bgImage={link} />;
});
return (
<div className={styles.OrderCard}>
<div className={styles.Orders}>{productList}</div>
</div>
);
}
}
export default OrderCard;