Как вставить переменный результат в строку в C ++ - PullRequest
3 голосов
/ 25 сентября 2011

Я только начал изучать C ++ в Qt, и мне было интересно, как я могу поместить переменные в строку? Я пытаюсь использовать это для простого приложения, где кто-то помещает свое имя в текстовое поле, затем нажимает кнопку, и он отображает там имя в предложении. Я знаю, в объективе-c это будет похоже на

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

Как бы я поступил так с C ++? Спасибо за помощь

Ответы [ 4 ]

8 голосов
/ 25 сентября 2011

Я предполагаю, что мы говорим о классе QString в Qt.В этом случае вы можете использовать метод 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);

См. Документацию QString для получения более подробной информации о многих перегрузках метода arg.

2 голосов
/ 25 сентября 2011

Вы не упоминаете тип вашей строки. Если вы используете стандартную библиотеку, тогда это будет что-то вроде

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

Это работает для объединения строк, если вы хотите вставить другие сложные типы, вы можете использовать поток строк, например:

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

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

Qt, вероятно, имеет свои собственные типы строк, которые должны работать аналогичным образом.

1 голос
/ 25 сентября 2011

Я бы использовал поток строк , но я не уверен на 100%, как это вписывается в ваш случай NSString ...

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

Я думаю QString есть несколько отличных помощников, которые могут сделать то же самое ...

QString hello("hello ");
QString message =  hello % nameField;
0 голосов
/ 25 сентября 2011

Вы можете использовать QString::sprintf. Я пока не нашел хороший пример его использования. (Если кто-то найдет его, не стесняйтесь редактировать его в этом ответе).

Вас может заинтересовать информация о разнице между QString::sprintf и QString::arg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...