Hello!
Is it possible to access strings in FreeFem++? I am trying to replace specific letters in a string and I don’t know how to do it.
This is the idea of the code (fn is the string):
for(int i = 0; i<fn.length; i++){
if(fn[i] == '/'){
fn[i] = '\\';
}
Thanks!
cmd
(Chris)
May 26, 2023, 8:00pm
2
Yes, use the fn.find("/")
to find the location of the first slash string as shown in this example.
Just in case anyone is struggling with the same, this is the way to access the string:
for(int i = 0; i<fn.length; i++){
if(fn(i:i) == "/"){
fn(i:i) = "\\";
}
}
The problem I have now is with the “\”, since I get the error “End of string could not be found”
marchywka
(MIKE MARCHYWKA)
May 27, 2023, 8:11am
6
I guess for anything more complicated, You could use exec. While slow it
will be versatile. For example see below. This uses grep but you could also use sed
or whatever. I left in the erroneous line because it took forever to find the problem lol.
exec("ls| grep edp > foo.txt");
exec("echo >> foo.txt");
ifstream ifs("foo.txt",binary);
string xxx;
//while (!ifs.eof) { getline(ifs, xxx) ; cout<<" line "<<xxx<endl; cout.flush; }
while (ifs.good()) { getline(ifs, xxx) ; cout<<" line "<<xxx<<endl; cout.flush; }
cmd
(Chris)
May 27, 2023, 11:22am
7
Another solution:
while (fn.find("/") >= 0) fn(fn.find("/"):fn.find("/")) = "\\";