【发布时间】:2015-02-13 19:55:20
【问题描述】:
我对 C++ 非常陌生,并且我已经挣扎了很长一段时间试图弄清楚如何解决这个问题。基本上,我需要从文件中读取并找到一篇文章的所有实例(“a”,“A”,“an”,“aN”,“An”,“AN”,“the”,“The”, tHe","theE","THe","tHE","TheE","THE"),然后在那篇文章后面插入一个形容词。形容词的大小写必须基于文章前面的单词。例如,如果我找到“a SHARK”,我需要将其设为“HAPPY SHARK”。谁能告诉我最好的方法是什么?到目前为止,我已经放弃了很多想法,这就是我现在所拥有的,尽管我认为我不能这样做:
#include <iostream>
#include <string>
#include <cctype>
#include <fstream>
#include <sstream>
using namespace std;
void
usage(char *progname, string msg){
cerr << "Error: " << msg << endl;
cerr << "Usage is: " << progname << " [filename]" << endl;
cerr << " specifying filename reads from that file; no filename reads standard input" << endl;
}
int main(int argc, char *argv[])
{
string adj;
string file;
string line;
string articles[14] = {"a","A","an","aN","An","AN","the","The","tHe","thE","THe","tHE","ThE","THE"};
ifstream rfile;
cin >> adj;
cin >> file;
rfile.open(file.c_str());
if(rfile.fail()){
cerr << "Error while attempting to open the file." << endl;
return 0;
}
while(rfile.good()){
getline(rfile,line,'\n');
istringstream iss(line);
string word;
while(iss >> word){
for(int i = 0; i <= 14; i++){
if(word == articles[i]){
cout << word + " " << endl;
}else{
continue;
}
}
}
}
}
【问题讨论】:
-
不要在
.good()上循环,而是在getline()上循环。这是循环直到文件结束的流方式! -
好的,我改变一下,谢谢
标签: c++ file capitalization