c++ - 从 'char' 到 'const char *' 的无效转换

标签 c++ fstream

我无法将字符加载到我的一个函数中。这是我开始时使用的源代码。

主要.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 )

我试过引用加载,它编译得很好,但是当我运行程序并尝试加载文本文件时,它崩溃了。我也试过给它加一个类型转换

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 header ,这样我就可以快速轻松地从文件中接收文本,但是我是否必须为此部分手动完成所有 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 读取输入后,可以通过调用 string::c_str() 函数获得 C 风格的字符串。

关于c++ - 从 'char' 到 'const char *' 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798912/

相关文章:

c++ - 来自维基百科的 RAII 示例

C++如何读取txt文件并检索数值,除了字符串(反之亦然)

c++ - 尝试使用 ostream 保存文件内容时出错

c++ - 如何检查从键盘输入的特定整数值是否存在于 C++ 文件的一行或多行中

c++ - 删除使用 "new"创建的对象

c++ - 使用 C++20 <ranges> 可以对 <set> 进行单行初始化吗?

c++ - 如何处理 RAII 的构造函数失败

c++ - 在重载决议中,选择使用模糊转换序列的函数是否必然导致调用格式错误?

c++ - fstream ifstream 我不明白如何将数据文件加载到我的程序中

c++ - 如何知道它是文本中的新行