我无法将char加载到我的一个函数中.这是我开始使用的源代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这就是我的编译器告诉我的.(我正在使用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 )
Run Code Online (Sandbox Code Playgroud)
我已经尝试引用加载,它编译得很好,但是当我运行程序并尝试加载文本文件时,它崩溃了.我也试过添加一个演员
string loadedFile = LoadFileToString( ( const char * ) load );
Run Code Online (Sandbox Code Playgroud)
但这给了我这个错误:
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 );
Run Code Online (Sandbox Code Playgroud)
我最初制作了IOF标题,因此我可以快速简便地从文件中接收文本,但我是否必须手动为此部分执行所有ifstream内容?或者有解决方法吗?
char load;
string intro = LoadFileToString( "Intro.txt" );
cout << intro << "> ";
cin >> load;
string loadedFile = LoadFileToString( load );
Run Code Online (Sandbox Code Playgroud)
你试图传递char给LoadFileToString它的需要char*.我想你打算做的就是这个
string intro = LoadFileToString( "Intro.txt" );
cout << intro << "> ";
string load;
cin >> load;
string loadedFile = LoadFileToString( load.c_str() );
Run Code Online (Sandbox Code Playgroud)
请注意,我正在将输入读入a string而不是a,char因为LoadFileToString期望传入(C风格)字符串; 相反,你正在阅读并尝试将角色传递给它.一旦通过a读取输入string,就可以通过调用string::c_str()函数获得C样式的字符串.
| 归档时间: |
|
| 查看次数: |
33027 次 |
| 最近记录: |