QGIS has a GDAL plugin gdal2xyz that can do it. It is however slow and creates a huge file.
Importing it back as ASCII layer in QGIS is even slower and almost freezes the whole computer.
I find r.out.xyz much faster than gdal2xyz and creates files 3 to 4 times smaller.
Loading the files back in GRASS is also much faster Below I imported the files generated by r.out.xyz (458 MB, extension xyz) (loaded in 18 s) the GDAL plugin (1.6 GB, extension csv) (loaded in 1 min 6 s).
It is true, however, that the GDAL plugin has found more points. Visually the imports look the same but the efficiency is dramatically different.
r.in.xyz
input=TopoToR_Toro42.xyz.xyz
output=TopoToR_XYZ separator=
Reading data ...
Writing to map ...
r.in.xyz complete. 11398193 points found in region.
(Fri Dec 13 16:06:36 2013) Command finished (18 sec)
(Fri Dec 13 16:16:04 2013)
r.in.xyz
input=TopoTor_Toro42.xyz.csv
output=TopoToR_XYZ_CSV separator=,
Reading data ...
Writing to map ...
r.in.xyz complete. 51619840 points found in region.
(Fri Dec 13 16:17:11 2013) Command finished (1 min 6 sec)
Also, to import/export in XYZ format from a vector layer v.in.ascii and v.out.ascii can be used from Grass.