質問するログイン新規登録

質問編集履歴

2

解決及び補足

2018/09/05 02:07

投稿

BeatStar
BeatStar

スコア4962

title CHANGED
File without changes
body CHANGED
@@ -136,4 +136,46 @@
136
136
  [情報]
137
137
  言語: C++
138
138
  コンパイラ: MinGW
139
- Qt: Qt 5.6 (LGPL)
139
+ Qt: Qt 5.6 (LGPL)
140
+
141
+ ---
142
+ [追記及び解決したことを提示]
143
+
144
+ 解決しました。Chironianさんの回答が解決への糸口になったのでChironianさんをBAとするためにここに
145
+ 解決した方法を書いておきます。( 似たような問題に直面した方のために。 )
146
+
147
+ 私の解決方法は、
148
+
149
+ C++由来のstd::ofstreamをコンポジションしてクラス化する。
150
+ そのクラスは引数としての文字列はQStringで受ける。
151
+ メンバ関数やコンストラクタ内で QString -> char* に変換する処理 ( QString -> std::wstring -> std::string -> char* )
152
+ をして std::ofstream::operator<< に渡す。
153
+
154
+
155
+ 例:
156
+
157
+ ```C++
158
+ // MyLib::toString() は QString -> std::wstring -> std::string と変換する関数だとする。
159
+ namespace IoFile{
160
+ class FileWriter{
161
+ public:
162
+ FileWriter( const QString &filepath ){
163
+ ofs.open( MyLib::toString( filepath.toStdWString() ).c_str() );
164
+ }
165
+
166
+ ~FileWriter(){ ofs.close(); }
167
+
168
+ void write( const QString &text = QString("\n") ){
169
+ if( text.compare( "" ) == 0 ){ ofs << endl; return; }
170
+ ofs << MyLib::toString( text.toStdWString() ).c_str();
171
+ }
172
+ protected:
173
+ std::ofstream ofs;
174
+ };
175
+ }
176
+
177
+
178
+ ```
179
+
180
+ C++のSTL使うぐらいならQt側のを使え...って言われるぐらいだから、普通にやり方があるんじゃないかなぁ...と思ったので。
181
+ お騒がせしてすみません。

1

要約をBoldにした

2018/09/05 02:07

投稿

BeatStar
BeatStar

スコア4962

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  趣味でC++やっています。Qtについてですが、
2
- テキストファイルの書き込みに関して質問します。
2
+ テキストファイルの書き込みに関して質問します。( 改行については一応解決したっぽいのでいいですが、後述の「なぜか別のソフトで認識できない」問題が残っています。 それについてです。 )
3
3
 
4
4
  (※ 長文になります)
5
5
 
@@ -129,7 +129,7 @@
129
129
  また問題になりそうなので、ここで解決したいなぁと。
130
130
 
131
131
 
132
- 要約すれば、「自ソフトだけじゃなくて他のソフトでもテキストファイルとして認識し、使用することができるように生成する方法」です。
132
+ 要約すれば、「**自ソフトだけじゃなくて他のソフトでもテキストファイルとして認識し、使用することができるように生成する方法**」です。
133
133
 
134
134
  今、外出先なのですぐには試せませんが...
135
135