C ++ внешний файл прочитан: я знаю, как найти и прочитать строку, findMe.Но как мне поступить с findMei (найти любое число, i, строки)? - PullRequest
0 голосов
/ 08 марта 2011

Заранее извиняюсь, потому что я подозреваю, что это может быть глупым вопросом.

Я написал функцию для чтения данных из внешнего файла. Затем я использую данные для выполнения расчетов, используя другой код, который я написал.

Функция работает, находя метку данных, которая выглядит следующим образом:

 const std::string findMe = "<dataLabel>";  

Каждый раз, когда я хочу найти данные, я заменяю dataLabel на метку тех данных, которые мне нужны из файла.

Вот что я хочу сделать. Я не хочу записывать на этикетке те данные, которые мне нужны каждый раз. Я хочу быть в состоянии сделать это:

for (int i = 0; i < anyNumberOfDataSets; i++)  
{
    findMe = "<dataLabeli>"; 
    // Then run function for reading in data, put data into a vector.
}

Затем я могу добавить любое количество наборов данных в мой внешний файл, присвоив каждому заголовок и каждый набор данных должен быть прочитан в вектор.

Проблема в том, что я просто не могу понять, как писать findMe = "<dataLabeli>". Это вообще возможно?

Я пробовал что-то вроде findMe = "<dataLabel" << i <<, но не повезло!

Любые предложения приветствуются.

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Очень трудно понять, что вы имеете в виду, но я думаю, что вы хотите это

#include <sstream>
#include <string>    

for (int i = 0; i < anyNumberOfDataSets; i++)  
{
    std::ostringstream strm;
    strm << "<dataLabel" << i << ">";
    const std::string findMe = strm.str();
    //...  
    //proceed with searching findMe     
}

Вы можете прочитать больше о строковых потоках, например, здесь

1 голос
/ 08 марта 2011

Другое решение:

using namespace boost;
findMe = str(format("<dataLabel%d>") % i);

Это заменит %d значением i, отформатированным как printf().

1 голос
/ 08 марта 2011

вы уже получили правильный ответ, так что это просто попытка помочь вам в решении таких проблем в будущем:

Ваша основная проблема здесь состоит в том, чтобы преобразовать целое число i в строку s (если вы это сделали, чем просто сделать findMe = "<datalabel"; findMe += s; findMe += ">";.

Поиск в Google для c ++ преобразования целого числа в строку даст вам this в качестве первого результата. Проблема решена.

Это не означает «использовать Google до / вместо запроса», это скорее «попытаться определить основную проблему».

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