好吧,我制作了一个小程序,尝试以string
格式制作printf()
。可悲的是,这是不可能的......
我从研究中了解到,在Java中你可以按如下方式创建一个字符串:
// create a String object with the value "Hello, World!" (like sprintf)
String myString = String.format("%s, %s", "Hello", "World!");
这是我所拥有的(我已经知道它不起作用):
#include <iostream>
using namespace std;
int main()
{
int level,health,attack,defense;
string name;
///Info
name="User";
level=1;
health=100;
attack=18;
defense=14;
///Make String
string testStr("Name: %s10\nLevel: %d5",name,level);//Is this any way possible??
string otherStr=testStr;//I would like to use 'testStr' as a variable to pass to a function.
//pass 'otherStr' to a function somewhere in an actual program to display in-game
cout << otherStr << endl;
return 0;
}
简而言之,我想知道如何以string
格式向printf()
变量添加变量,这样我就可以在GUI程序(Ogre3D游戏)中以整洁的方式显示字符串变量printf()
。
编辑:我发现sprintf(buffer,"Name:%10s\nLevel:%5d",name.c_str(),level);
是我正在寻找的功能。我也注意到我忘了添加<stdio.h>
。 buffer
是一个字符数组,输出时,字符串具有printf()
的对齐方式。以下是带有输出的结果代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int level,health,attack,defense;
string name;
///Info
name="User";
level=1;
health=100;
attack=18;
defense=14;
///Make String
char buffer[50];
sprintf(buffer,"Name:%10s\nLevel:%5d",name.c_str(),level);
cout << buffer << endl;
return 0;
}
输出:
Name: User
Level: 1
这两行都有正当理由,cout
或stringstream
没有。