[解決済み] char' から 'const char *' への変換が無効です。
2022-01-29 19:42:13
質問
ある関数に文字列を読み込むのに問題があります。これは、私が最初に作成したソースコードです。
main.cpp
#include <IOF\IOF.h>
int main()
{
char load;
string intro = LoadFileToString( "Intro.txt" );
cout << intro << "> ";
cin >> load;
string loadedFile = LoadFileToString( load );
cout << loadedFile;
cin.get();
cin.ignore();
return 0;
}
IOF.h
#ifndef IOF_H
#define IOF_H
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string LoadFileToString( const char * filePath )
{
string fileData;
ifstream loadFile( filePath, ios::in );
if ( loadFile.is_open() )
{
string line;
while ( getline( loadFile, line ) )
{
fileData += line + "\n";
}
loadFile.close();
}
return fileData;
}
#endif
そして、これは私のコンパイラが教えてくれたものです。(私はMinGWを使っています)
H:\Programming\Dropbox\C++\Basic Text Editor\main.cpp: In function 'int main()':
H:\Programming\Dropbox\C++\Basic Text Editor\main.cpp:13:45: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
string loadedFile = LoadFileToString( load );
^
In file included from H:\Programming\Dropbox\C++\Basic Text Editor\main.cpp:1:0:
H:\Programming\pocketcpp\MinGW\include/IOF\IOF.h:10:8: error: initializing argument 1 of 'std::string LoadFileToString(const char*)' [-fpermissive]
string LoadFileToString( const char * filePath )
loadを参照してみたところ、コンパイルはうまくいきましたが、プログラムを実行してテキストファイルを読み込もうとすると、クラッシュしてしまいます。また、キャストを追加してみました
string loadedFile = LoadFileToString( ( const char * ) load );
が、このようなエラーが発生しました。
H:\Programming\Dropbox\C++\Basic Text Editor\main.cpp: In function 'int main()':
H:\Programming\Dropbox\C++\Basic Text Editor\main.cpp:13:57: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
string loadedFile = LoadFileToString( ( const char * ) load );
もともとIOFヘッダを作ったのは、ファイルからテキストを受け取るための高速で簡単な方法を持つためですが、この部分はifstreamのものをすべて手動でやらなければならないのでしょうか?それとも、回避策はあるのでしょうか?
解決方法は?
char load;
string intro = LoadFileToString( "Intro.txt" );
cout << intro << "> ";
cin >> load;
string loadedFile = LoadFileToString( load );
を渡そうとしているのですね。
char
から
LoadFileToString
を取り込むものです。
char*
. あなたがやろうとしているのは、次のようなことだと思います。
string intro = LoadFileToString( "Intro.txt" );
cout << intro << "> ";
string load;
cin >> load;
string loadedFile = LoadFileToString( load.c_str() );
入力を
string
ではなく
char
というのは
LoadFileToString
は(C言語スタイルの)文字列が渡されることを期待します。その代わりに、文字を読んで渡そうとしているのです。入力が
string
を呼び出すことで、C言語形式の文字列を得ることができます。
string::c_str()
関数を使用します。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない