質問編集履歴

2

解決及び補足

2018/09/05 02:07

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
File without changes
test CHANGED
@@ -275,3 +275,87 @@
275
275
  コンパイラ: MinGW
276
276
 
277
277
  Qt: Qt 5.6 (LGPL)
278
+
279
+
280
+
281
+ ---
282
+
283
+ [追記及び解決したことを提示]
284
+
285
+
286
+
287
+ 解決しました。Chironianさんの回答が解決への糸口になったのでChironianさんをBAとするためにここに
288
+
289
+ 解決した方法を書いておきます。( 似たような問題に直面した方のために。 )
290
+
291
+
292
+
293
+ 私の解決方法は、
294
+
295
+
296
+
297
+ C++由来のstd::ofstreamをコンポジションしてクラス化する。
298
+
299
+ そのクラスは引数としての文字列はQStringで受ける。
300
+
301
+ メンバ関数やコンストラクタ内で QString -> char* に変換する処理 ( QString -> std::wstring -> std::string -> char* )
302
+
303
+ をして std::ofstream::operator<< に渡す。
304
+
305
+
306
+
307
+
308
+
309
+ 例:
310
+
311
+
312
+
313
+ ```C++
314
+
315
+ // MyLib::toString() は QString -> std::wstring -> std::string と変換する関数だとする。
316
+
317
+ namespace IoFile{
318
+
319
+ class FileWriter{
320
+
321
+ public:
322
+
323
+ FileWriter( const QString &filepath ){
324
+
325
+ ofs.open( MyLib::toString( filepath.toStdWString() ).c_str() );
326
+
327
+ }
328
+
329
+
330
+
331
+ ~FileWriter(){ ofs.close(); }
332
+
333
+
334
+
335
+ void write( const QString &text = QString("\n") ){
336
+
337
+ if( text.compare( "" ) == 0 ){ ofs << endl; return; }
338
+
339
+ ofs << MyLib::toString( text.toStdWString() ).c_str();
340
+
341
+ }
342
+
343
+ protected:
344
+
345
+ std::ofstream ofs;
346
+
347
+ };
348
+
349
+ }
350
+
351
+
352
+
353
+
354
+
355
+ ```
356
+
357
+
358
+
359
+ C++のSTL使うぐらいならQt側のを使え...って言われるぐらいだから、普通にやり方があるんじゃないかなぁ...と思ったので。
360
+
361
+ お騒がせしてすみません。

1

要約をBoldにした

2018/09/05 02:07

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  趣味でC++やっています。Qtについてですが、
2
2
 
3
- テキストファイルの書き込みに関して質問します。
3
+ テキストファイルの書き込みに関して質問します。( 改行については一応解決したっぽいのでいいですが、後述の「なぜか別のソフトで認識できない」問題が残っています。 それについてです。 )
4
4
 
5
5
 
6
6
 
@@ -260,7 +260,7 @@
260
260
 
261
261
 
262
262
 
263
- 要約すれば、「自ソフトだけじゃなくて他のソフトでもテキストファイルとして認識し、使用することができるように生成する方法」です。
263
+ 要約すれば、「**自ソフトだけじゃなくて他のソフトでもテキストファイルとして認識し、使用することができるように生成する方法**」です。
264
264
 
265
265
 
266
266