我正在处理一个项目,我需要每次根据输入选择不同的.txt。
这就是我所拥有的:
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string hp, att, def, vel, spec;
string answer, monster;
do
{
cout << "Which Monster?: ";
cin >> monster;
cout << endl;
ifstream selection;
selection.open(monster+".txt");
selection.close();
cout << endl << "Again? ";
cin >> answer;
}
while (answer == "y");
cout << "Hello world!" << endl;
return 0;
}
我必须获取怪物字符串并搜索具有相同名称的.txt。 如果我输入&#34; Troll&#34;它将搜索Troll.txt 有办法吗?
这是我得到的错误: F:\ GdR \ Campagna 1 \ CalcoloStats \ main.cpp | 22 |错误:没有匹配函数来调用&#39; std :: basic_ifstream :: open(std :: __ cxx11 :: basic_string)&#39; | < / p>
答案 0 :(得分:1)
鉴于monster
是std::string
,此表达式为:
monster + ".txt"
也是std::string
。
从C ++ 11开始,您可以将其用作ifstream
的{{1}}函数的参数。但是,在此之前,您遇到了open
的限制,即它只能采用C风格的字符串。
幸运的是,您可以使用ifstream
成员函数从std::string
获取C风格的字符串。
所以,要么:
c_str()
或者从传统模式中获得现代编译器/开关。
答案 1 :(得分:-1)
感谢Orbit中的Lightness Races,用C ++ 11 Compiler标志解决