Я пишу 2 программы, первая программа имеет массив целых чиселКак конвертировать строку в вектор
vector<int> v = {10, 200, 3000, 40000};
Затем он преобразует вектор в строку
int i;
stringstream sw;
string stringword;
for (i=0;i<v.size();i++)
{
sw << v[i] << ',';
}
stringword = sw.str();
cout << "Vector in string : "<< stringword << endl;
А потом записать его в файл
ofstream myfile;
myfile.open ("writtentext");
myfile << stringword;
myfile.close();
выход:
Vector in string : 10,200,3000,40000
Вторая программа прочитает файл, преобразует строку обратно в целое, а затем вернет ее обратно в вектор.
Код:
string stringword;
ifstream myfile;
myfile.open ("writtentext");
getline (myfile,stringword);
cout << "Read From File = " << stringword << endl;
cout << "Convert back to vector = " ;
for (int i=0;i<stringword.length();i++)
{
if (stringword.find(','))
{
int value;
istringstream (stringword) >> value;
v.push_back(value);
stringword.erase(0, stringword.find(','));
}
}
for (int j=0;j<v.size();j++)
{
cout << v.at(j) << " " ;
}
Проблема заключается в том, что может только конвертировать и оттеснить первый элемент, остальное стирается. Вот вывод:
Read From File = 10,200,3000,40000,
Convert back to vector = 10
Что я сделал не так? Благодаря
пропустите часть строки и просто напишите вектор в файл. – andre
Проверьте, что 'stringword.find (',')' возвращает (http://en.cppreference.com/w/cpp/string/basic_string/find). Если это не делает очевидным, запустите код через отладчик, и вы увидите. И пока вы на нем, проверьте также документацию для «erase»: http://en.cppreference.com/w/cpp/string/basic_string/erase. –