我需要编写一个程序来从文件中读取所有数据,并通过包括这部分代码来在c ++中向后显示内容。为了读取和显示单个字符,请使用数字(0-9),字母(a-z或A-Z),符号(&^#)或空格
python -m pip install jupyter
所以我需要做的是提示用户输入文件名 一次从一个文件读取文件中的数据,并将其存储在字符串中,然后编写一个函数以向后显示结果字符串的上下文。
答案 0 :(得分:0)
您可以一次读取一个字符的内容,检查它是字母数字还是符号之一,然后将其附加到字符串中,然后使用std :: reverse对其进行反转。
#include <iostream>
#include <cctype>
#include <fstream>
#include <string>
int main()
{
std::cout << "Please enter the filename: ";
std::string filename;
std::cin >> filename;
std::string contents;
std::ifstream file(filename, std::ifstream::in);
if (file.good())
{
char c;
const std::string symbols = "&^# ";
while (file >> std::noskipws >> c)
{
if (isalnum || symbols.find(c) != std::string::npos)
{
contents += c;
}
}
std::reverse(contents.begin(), contents.end());
}
std::cout << contents;
return 0;
}
或者,您可以读取文件的所有内容,删除不需要的任何字符并反转。为此,您可以在std :: remove_if中使用谓词函数。
#include <iostream>
#include <cctype>
#include <fstream>
#include <string>
int main()
{
std::cout << "Please enter the filename: ";
std::string filename;
std::cin >> filename;
std::string contents;
std::ifstream file(filename, std::ifstream::in);
if (file.good())
{
std::string contents((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
const std::string symbols = "&^# ";
contents.erase(std::remove_if(contents.begin(), contents.end()
[&contents, &symbols](const char c) { return !(std::isalnum(c) || symbols.find(c) != std::string::npos); }),
contents.end() );
std::reverse(contents.begin(), contents.end());
}
std::cout << contents;
return 0;
}
答案 1 :(得分:-1)
int main()
{
string fn;
cin >> fn;
ifstream fin(fn);
if (fin.is_open())
{
/* for reading data character by character.. */
string vec="";
char temp;
while (fin.get(temp))
{
vec += temp;
}
/*for writing data in reverse order*/
for (int i = vec.size() - 1; i >= 0; i--)
{
cout << vec[i];
}
}
return 0;
}
根据您的问题
“因此,我需要做的基本上是提示用户输入文件名,一次从文件中读取一个字母并将其存储在字符串中,然后编写一个函数以向后显示结果字符串的上下文。”