Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 199
1

Совместное использование sptintf и std::string

01.09.2017, 08:01. Показов 1217. Ответов 3
Метки нет (Все метки)

Хотелось бы получить форматированную строку в переменной типа std::string,
Максимально простым способом. Подскажите как это лучше сделать?

P.S.: хочу получить что-то типа
C++
1
std::string = std::sprintf("параметр-%02u", 8);
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2017, 08:01
Ответы с готовыми решениями:

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string ClientData::getFirstName() const{ ...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и...

3
749 / 352 / 72
Регистрация: 10.06.2014
Сообщений: 2,371
01.09.2017, 08:59 2
dopleref,
В стандартной библиотеке насколько я помню нет такой вещи... Можно стримы юзать или что то такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//g++  5.4.0
 
#include <iostream>
#include <string>
#include <cstdio>
 
template<typename ...Args>
std::string mysprintf(const char *format, Args... args)
{
     int size = std::snprintf(nullptr, 0, format, args...) + 1;
     char *buf = new char[size];
     std::snprintf(buf, size, format, args...);
     std::string result(buf);
     
     return result;
}
 
int main()
{
    std::string s = mysprintf("hello, %s", "Jack");
    std::cout << s;
}
http://rextester.com/YBG17002
1
Модератор
Эксперт С++
11130 / 9168 / 5506
Регистрация: 18.12.2011
Сообщений: 24,482
01.09.2017, 09:00 3
Лучший ответ Сообщение было отмечено dopleref как решение

Решение

Это как-то некошерно
Используйте строковые потоки:
C++
1
2
3
4
5
6
7
#include <sstream>
#include <iomanip>
 
ostrinstream ss;
unsigned int n=8;
ss<<"параметр-"<<setfill('0')<<width(2)<<n;
string result=ss.str();
1
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 199
01.09.2017, 09:09  [ТС] 4
Undisputed, zss, спасибо за ответы!
жаль нет более краткого варианта с использованием stl,
хоть к проекту boost подключай, ради boost::format().
Буду использовать вариант с потоком ostringstream.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2017, 09:09

Передача функции указатель на элемент std::vector<std::string>
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в...

Операция std::cout для Объекта типа std::string
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий...

No match for 'operator<' (operand types are 'std::__cxx11::string {aka std::__c
Имеем следующий код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include...

Почему std::string_view МЕДЛЕННЕЕ, чем std::string?
Всем привет! Нужно найти количество уникальных строк в больших текстовых файлах (размером до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.