我刚刚开始在Qt中学习C ++,我想知道如何将变量结果放入字符串中?我正在尝试将此用于一个简单的应用程序,其中有人将他们的名字放在文本字段中,然后按下按钮,它会在一个句子中显示名称。我知道在Objective-c中它就像是,
NSString *name = [NSString stringWithFormatting:@"Hello, %@", [nameField stringValue]];
[nameField setStringValue:name];
我如何使用C ++做这样的事情?谢谢你的帮助
答案 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
的信息。