是否可以添加到char类型变量以获取字符串?

时间:2018-11-19 15:12:37

标签: c++ string char

假设我有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 

谢谢

4 个答案:

答案 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;