我正在经历一个练习,需要在从文件中删除所有元音后从文件中输出文本。例如,包含文本“计算理论”的文件应输出“Thry f Cmpttn”。
我尝试构建一个函数“removeVowel元音(ifsream
bool isVowel(char ch){
switch (ch) {
case'a':
case'e':
case'i':
case'o':
case'u':
return true;
}
return false;
}
string removeVowel(ifstream& line){
string ss;
string no_Vow;
while (getline(line, ss)) {
for (int i = 0; i < ss.size(); i++) {
if (!isVowel(ss[i]))
no_Vow += ss[i];
}
}
return no_Vow;
}
int main() {
string nahmen;
cout << "Enter file name";
cin >> nahmen;
ifstream fs{nahmen};
ofstream fso{ nahmen };
fso << "A quick brown fox jumped over the lazy dog";
string new_s;
new_s = removeVowel(fs);
cout << new_s;
}
我希望在控制台中输出不带元音的字符串,但程序在不输出字符串的情况下终止。
您的原始代码将在您读取输入之前覆盖输入,因此无需处理数据。通常,您不想销毁文件的输入数据,但如果这样做,则需要将新文件内容存储在某个地方。对于较小的文件,可以在内存中执行此操作。对于较大的文件,最好存储在临时文件中,然后将临时文件移动到原始输入上。
下面是一个使用STL来完成任务的示例,从而减少了您必须编写的逻辑量。
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iostream>
#include <iterator>
namespace {
static bool isVowel(char const ch) {
// '\0' is considered part of the search string, thus need to handle it separately
return (std::strchr("aeiouAEIOU", ch) != nullptr) && (ch != '\0');
}
static void setOutputExceptions(std::ostream &os) {
// Set exceptions on this we usually don't want to handle for output strings
os.exceptions(std::ios_base::badbit | std::ios_base::eofbit | std::ios_base::failbit);
}
} // close unnamed namespace
int main() {
setOutputExceptions(std::cout);
std::cout << "Enter file name: ";
std::string nahmen;
std::cin >> nahmen;
if (!std::cin) throw std::runtime_error("Unable to read file name");
std::string fileContent;
{
std::ifstream fs{nahmen};
if (!fs) throw std::runtime_error("unable to open file " + nahmen);
// we do not copy the vowels to fileContent to save space
remove_copy_if(std::istreambuf_iterator<char>(fs), std::istreambuf_iterator<char>(),
back_inserter(fileContent),
isVowel);
} // close fs
// we don't to have a input and output handle to the same file at the same time
{
std::ofstream fso;
setOutputExceptions(fso);
fso.open(nahmen);
fso << fileContent;
} // close fso
return EXIT_SUCCESS;
}
问题内容: 我正在考虑使用删除字符串中的某些字符。目前尚不清楚将要删除哪些字符(即我想删除哪些字符),但是我会假定任何字符都是有效的(例如和之类的东西,等等)。 我遇到了http://www.java-tips.org/java-se-tips/java.lang/strip-certain-characters- from-a-string.html, 但是肯定有比遍历每个字符更好的方法… 有什
问题内容: 我有绳子。 如何在离开字符串的同时从字符串中删除? 问题答案: 对于所有要丢弃的事件,请使用: PS:replace函数返回一个新字符串,并使原始字符串保持不变,因此在replace()调用之后使用该函数的返回值。
我有一个字符串。 在保留的同时,如何从字符串中删除?
问题内容: 我想从我的字符串中删除以下所有字符 “> [],-” 目前我正在这样做。但必须有一个更有效的方法 问题答案: 使用描述要替换的所有字符的正则表达式,以及替换与该正则表达式匹配的所有内容的方法: (编辑:实际上,我认为不应该转义。而且我忘记了将反斜杠加倍,因为它们会被解释两次:一次是由Java编译器,一次是由正则表达式引擎。)
问题内容: 我们使用ELK堆栈进行日志记录。我被要求设计一个流程,以解决如何删除意外记录的敏感信息。 现在,根据我对ElasticSearch(Lucene)如何处理删除和更新的了解,仍然无法使用索引中的数据。随着索引的合并,最终将被清理,等等。 是否有运行更新(删除内容)或删除(删除内容)并保证将其删除的过程? 问题答案: 当更新或删除某些值时,ES会将当前文档标记为已删除并为新文档建立索引。删
我有一个表格,上面有多个大陆的数据。现在我想删除每一行不是欧洲或非洲的大陆。与: 我每一排都是“欧洲”,但我想念“非洲”。有没有办法包含“或”-运算符?这对我不起作用。