C++ to matlab(m-file) without mex

2 visualizaciones (últimos 30 días)
Pramit Biswas
Pramit Biswas el 16 de Mzo. de 2015
Respondida: Pramit Biswas el 17 de Mzo. de 2015
I have a C++ code:
#include <iostream>
#include <fstream>
#include <iomanip> // std::setfill, std::setw
using namespace std;
int main()
{
int i,j;
ofstream outfile;
outfile.open("testText.txt", ios::app);
outfile<< setfill('0');
for(i=0;i<2;i++)
{
for(j=0;j<12;j++)
{
outfile<<"XYZ"<<setw(2)<<i<<setw(2)<<j<<"\n";
}
outfile<<"\n";
}
outfile.close();
return(0);
}
Which will generate a text file like:
XYZ0000
XYZ0001
XYZ0002
XYZ0003
XYZ0004
XYZ0005
XYZ0006
XYZ0007
XYZ0008
XYZ0009
XYZ0010
XYZ0011
XYZ0100
XYZ0101
XYZ0102
XYZ0103
XYZ0104
XYZ0105
XYZ0106
XYZ0107
XYZ0108
XYZ0109
XYZ0110
XYZ0111
Need to create same output using matlab code.
Main problem:
setfill() alternative in matlab?
setw() alternative in matlab?
how
outfile<<"XYZ"<<setw(2)<<i<<setw(2)<<j<<"\n";
line can be replaced?
setw(): used to set field width of the next variable
setfill(): used to set fill character, what should be used to fill the width in setw.
Really need some help. Thanks in advance.

Respuesta aceptada

David Sanchez
David Sanchez el 17 de Mzo. de 2015
Absolutely, You can:
i=10;
j=2;
option = '02';
str = strcat('XYZ%',option,'d%',option,'d\n');
fprintf(str, i, j)
XYZ1002
  1 comentario
Pramit Biswas
Pramit Biswas el 17 de Mzo. de 2015
Waaooo.
That's a great trick. well done.

Iniciar sesión para comentar.

Más respuestas (2)

Ken Atwell
Ken Atwell el 16 de Mzo. de 2015
You can use fprintf in MATLAB, which is closer in usage to C than C++:
>> i=1;
>> j=11;
>> fprintf('XYZ%02d%02d\n', i, j)
XYZ0111
  1 comentario
Pramit Biswas
Pramit Biswas el 17 de Mzo. de 2015
Thank you very much for your really helpful answer.
using this code writing to the file is done;
setw() partially done; can we put those 02 as any variable, i mean if i want to change 02 to 03 automatically within the program?
using said command, fill will be always zero. what if I want to fill it with some other values? i.e. setfill() alternative?

Iniciar sesión para comentar.


Pramit Biswas
Pramit Biswas el 17 de Mzo. de 2015
final matlab code:
input1 = fopen('exp.txt','w');
fill = '02';
for i=0:1:1
for j=0:1:11
str = strcat('XYZ%',fill,'d%',fill,'d\n');
fprintf(input1, str, i, j);
end
fprintf(input1, '\n');
end
fclose(input1);

Categorías

Más información sobre Call C++ from MATLAB en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by