是否可以使用“printf()”格式制作“字符串”变量?

时间:2014-02-27 15:33:45

标签: java c++ string printf std

好吧,我制作了一个小程序,尝试以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

这两行都有正当理由,coutstringstream没有。

0 个答案:

没有答案