替换向量C ++向量中的元素

时间:2013-11-02 23:59:54

标签: c++ string vector

我有一个向量的向量,只包含句点 (“。”)到目前为止,我想用一个输入文件中的符号替换网格上的某些坐标。我正在使用替换方法,但一直收到此错误

  

“错误:没有用于替换的调用的匹配函数(std :: basic_string,std :: allocator>&,std :: basic_string,std :: allocator>&,const char [2],const char *)“

我不确定该错误的含义。我感谢任何和所有的帮助。提前致谢

这是我的代码

 #include <vector>
 #include <string>
 #include <fstream>
 #include <iostream>
 #include <algorithm>



using namespace std; 

int main()
{
string locationfilename, filenames,symbol;
int numRows, numCols, startRow, startCol, endRow, endCol, possRow, possCol, id;

cout<< "Enter Locations Filename"<<endl;
cin>>locationfilename;
cout<< "Enter Names Filename"<<endl;
cin>>filenames;

ifstream locations(locationfilename.c_str());
ifstream names(filenames.c_str());

locations>>numRows>>numCols>>startRow>>startCol>>endRow>>endCol;

vector <string> rows(numCols,".");
vector< vector<string> > grid(numRows,rows);


locations>>possRow>>possCol>>symbol>>id;
while(!locations.fail())
{


    if(possRow>numRows || possCol>numCols)
    {
        cout<<id<< " out of bounds-ignoring"<<endl;
    } 
    else
    {
    replace(grid.at(possRow).front(),grid.at(possRow).back(),".",symbol.c_str());
    }

locations>>possRow>>possCol>>symbol>>id;
}

}

1 个答案:

答案 0 :(得分:1)

正如Chris指出的那样,您在std::replace中传递的参数不正确。 std::replace预计iterators的前两个参数,但您传递references

您可以使用begin()end()来获取迭代器:
std::replace(grid.at(possRow).begin(), grid.at(possRow).end(), ".", symbol.c_str());