Как я могу объединить несколько Чар в стринг?
Я делаю синтаксический анализ строк и, по сути, то, что я хотел бы сделать, это что-то вроде этого:
string signature = char[index+1] + '/' + char[index+2];
но вы не можете сделать конкатенацию строк на char, так что приводит меня к этому вопросу, как я могу имитировать конкатенацию на char?
Я знаю, что библиотека строк в C++ имеет append, но я не думаю, что это работает для моего случая. Есть идеи?
5 ответов
вы можете объединить символы в std::string
, вам просто нужен один из операндов, чтобы быть std::string
, в противном случае вы добавляете целые числа.
std::string signature = std::string() + char_array[index+1] + '/' + char_array[index+2];
это работает только если первый или второй операнд в цепочке-это std::string
. Это приведет к первому вызову operator+
возвращение std::string
, а остальные последуют их примеру. Таким образом, это не дает ожидаемых результатов:
std::string signature = char_array[index+1] + '/' + char_array[index+2] + std::string();
В C++11 вы можете сделать:
std::string signature{chars[index+1], '/', chars[index+2]};
Не уверен, насколько это будет полезно в реальном коде, но он имеет дело с вашим примером.
вы можете объединить символы и строки C-стиля в существующую строку довольно легко:
string signature;
signature += char_array[index + 1]; // append character from char_array[index+1]
signature += '/';
signature += char_array[index + 2]; // append character from char_array[index+2]
вам просто нужно обеспечить левую сторону +
или +=
это std::string
.
в дополнение к решению Стива и Бенджамина, вы также можете использовать std::stringstream
:
std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();
Если вы делали это с .Net, массив символов можно использовать в конструкторе строк.
http://msdn.microsoft.com/en-us/library/ttyxaek9 (v=против 110).aspx