如何在C ++中将变量结果插入到字符串中

时间:2011-09-25 01:58:01

标签: c++ qt

我刚刚开始在Qt中学习C ++,我想知道如何将变量结果放入字符串中?我正在尝试将此用于一个简单的应用程序,其中有人将他们的名字放在文本字段中,然后按下按钮,它会在一个句子中显示名称。我知道在Objective-c中它就像是,

NSString *name = [NSString stringWithFormatting:@"Hello, %@", [nameField stringValue]];
[nameField setStringValue:name];

我如何使用C ++做这样的事情?谢谢你的帮助

4 个答案:

答案 0 :(得分:8)

我假设我们在这里讨论Qt的QString课程。在这种情况下,您可以使用arg方法:

 int     i;           // current file's number
 long    total;       // number of files to process
 QString fileName;    // current file's name

 QString status = QString("Processing file %1 of %2: %3")
                 .arg(i).arg(total).arg(fileName);

有关arg方法的多次重载的详细信息,请参阅QString documentation

答案 1 :(得分:2)

你没有提到你的字符串是什么类型。如果您正在使用标准库,那么它将是

std::string name = "Hello, " + nameField;

适用于连接字符串,如果要插入其他复杂类型,可以使用这样的字符串流:

std::ostringstream stream;
stream << "Hello, " << nameField;
stream << ", here is an int " << 7;

std::string text = stream.str();

Qt可能有自己的字符串类型,应该以类似的方式工作。

答案 2 :(得分:1)

我会使用stringstream,但我不能100%确定如何适合您的NSString案例......

stringstream ss (stringstream::in);
ss << "hello my name is " << nameField;

我认为QString有一些漂亮的助手可能会做同样的事情......

QString hello("hello ");
QString message =  hello % nameField;

答案 3 :(得分:0)

您可以使用QString::sprintf。不过,我还没有找到一个好用的例子。 (如果其他人找到了,请随意将其编辑到此答案中。)

您可能有兴趣查看有关the difference between QString::sprintf and QString::arg的信息。