簡體   English   中英

如何在 C++ 中將變量結果插入到字符串中

[英]How do I insert a variable result into a string in C++

我剛開始在 Qt 中學習 C++,我想知道如何將變量結果放入字符串中? 我試圖將它用於一個簡單的應用程序,其中有人將他們的名字放在一個文本字段中,然后按下一個按鈕,它會在一個句子中顯示該名字。 我知道在objective-c中它會像,

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

我將如何用 C++ 做這樣的事情? 謝謝您的幫助

我假設我們在這里談論的是 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 文檔

你沒有提到你的字符串是什么類型。 如果您使用的是標准庫,那么它將類似於

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

這適用於連接字符串,如果你想插入其他復雜類型,你可以使用這樣的字符串流:

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

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

Qt 可能有自己的字符串類型,應該以類似的方式工作。

我會使用stringstream但我不是 100% 確定它如何適合您的 NSString 案例......

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

我認為QString有一些漂亮的助手可以做同樣的事情......

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

您可以使用QString::sprintf 不過,我還沒有找到使用它的好例子。 (如果其他人找到了,請隨時將其編輯到此答案中)。

您可能有興趣查看有關QString::sprintfQString::arg之間差異的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM