Можно ли добавить переменную типа char для получения строки? - PullRequest
0 голосов
/ 19 ноября 2018

Допустим, у меня есть 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 голосов
/ 19 ноября 2018

Можно создать строку за один раз.Это также наиболее эффективный способ:

char a = 'A';
char b = 'B';

std::string str{a, b};

std::cout << str << std::endl; // "AB"

При этом используется конструктор initializer_list из std::string.


Для более общего способа построения строки (из любого типа, которыйработает с 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"
0 голосов
/ 19 ноября 2018

Да, вполне возможно объединить char в std::string, вам просто нужно, чтобы один из операндов был std::string, иначе вы по существу добавляете целые числа.

#include <iostream>

int main()
{
    char a = 'A';
    char b = 'B';

    std::string str = std::string() + a + b;

    return 0;
}
0 голосов
/ 19 ноября 2018

Есть следующие способы ..

#include <bits/stdc++.h>
#define pb push_back

using namespace std;

int main()
{
    char a = 'A';
    char b = 'B';
    //using string class fill constructor    
    string str3;
    str3 = string(1,a) + string(1,b);
    cout << str3;
    str3.clear();
    cout << endl;
    //using stringstream
    stringstream ss;
    ss << a << b;
    str3 = ss.str();
    cout << str3;
    str3.clear();
    cout << endl;
    //using string push_back
    str3.pb(a);
    str3.pb(b);
    cout << str3;
    str3.clear();
    cout << endl;
    //using string::operator+=
    str3+=a;
    str3+=b;
    cout << str3;
    str3.clear();
    cout << endl;
    //using string::append
    str3.append(1,a);
    str3.append(1,b);
    cout << str3;
    str3.clear();
    cout << endl;
    //using string::insert
    str3.insert(0,1,a);
    str3.insert(1,1,b);
    cout << str3;
    str3.clear();
    cout << endl;
    //using string::replace
    str3.replace(0,1,1,a);
    str3.replace(1,1,1,b);
    cout << str3;
    str3.clear();
    cout << endl;
    return 0;
}
0 голосов
/ 19 ноября 2018

Конечно. Есть несколько способов. Вот несколько.

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...