Блог пользователя NeverSayNever

Автор NeverSayNever, история, 9 лет назад, По-английски

I want to write a function that accepts one string and one integer and return concatenation of both but i always want integer to be fixed width say 3.

e.g. if string is "jamesbond" and integer is 7, function should return a string "jamesbond007". How to do it in C++ ?

Note: I dont want to write if else and other conditional statements. Thank you.

  • Проголосовать: нравится
  • -10
  • Проголосовать: не нравится

»
9 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
string f(string s, int i)
{
	s.push_back('0'+i/100%10);
	s.push_back('0'+i/10%10);
	s.push_back('0'+i%10);
	return s;
}
»
9 лет назад, скрыть # |
 
Проголосовать: нравится +21 Проголосовать: не нравится
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
using namespace std;

string f(string const& s, int d) {
	stringstream ss;
	ss << s << setw(3) << setfill('0') << d;
	return ss.str();
}

int main() {
	cout << f("jamesbond", 7);
}
»
9 лет назад, скрыть # |
Rev. 4  
Проголосовать: нравится 0 Проголосовать: не нравится

str s2= str("i");

int l2=strlen(s2);

str dummy=("0");

make_dummy_of_length_w-l2();

return s1+dummy+s2;

»
9 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +16 Проголосовать: не нравится
string concat(string s, int x) {
  char tmp[s.size() + 30];
  sprintf(tmp, "%s%03d", s.c_str(), x);
  return string(tmp);
}