我需要用 std::string
替换使用 snprintf
的 C 字符缓冲区,并对它们执行相同的操作。我被禁止使用 stringstream
或 boost
库。
有办法吗?
const char *sz="my age is";
std::string s;
s=sz;
s+=100;
printf(" %s \n",s.c_str());
我得到的输出为
my age is d
所需的输出是:
my age is 100
最佳答案
这正是发明 stringstream
的工作类型,因此将它们排除在外似乎相当愚蠢。
不过,是的,没有它们你也可以很容易地做到这一点:
std::string s{" my age is "};
s += std::to_string(100);
std::cout << s << " \n";
如果您受困于不支持 to_string
的旧编译器,您可以很容易地编写自己的编译器:
#include <string>
std::string to_string(unsigned in) {
char buffer[32];
buffer[31] = '\0';
int pos = 31;
while (in) {
buffer[--pos] = in % 10 + '0';
in /= 10;
}
return std::string(buffer+pos);
}
关于c++ - 用 C++ 字符串替换 snprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627280/