Bas*_*gar 0 c c++ printf stdstring
我需要使用snprintfwith 替换C char缓冲区std::string并对它们执行相同的操作.我被禁止使用stringstream或boost库.
有办法吗?
const char *sz="my age is";
std::string s;
s=sz;
s+=100;
printf(" %s \n",s.c_str());
Run Code Online (Sandbox Code Playgroud)
我把输出作为
my age is d
Run Code Online (Sandbox Code Playgroud)
所需输出的位置是:
my age is 100
Run Code Online (Sandbox Code Playgroud)
这正是stringstream发明s 的那种工作,因此将它们排除在外似乎相当愚蠢.
尽管如此,是的,你可以很容易地做到这一点:
std::string s{" my age is "};
s += std::to_string(100);
std::cout << s << " \n";
Run Code Online (Sandbox Code Playgroud)
如果您遇到了不支持的旧编译器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);
}
Run Code Online (Sandbox Code Playgroud)