Im очень новичок в C++ и ive долгое время пытались выяснить, как это сделать. В принципе, мне нужно прочитать из файла и найти все экземпляры статьи («a», «A», «an», «aN», «an», «AN», «the», «The», «Это», «Это», «Это», «ТЭ», «ТЭ», «А»), а затем вставить прилагательное после этой статьи. Капитализация прилагательного должна основываться на слове, первоначально представленном перед статьей. Например, если бы я нашел «SHARK», мне нужно было бы сделать его «HAPPY SHARK». Может ли кто-нибудь сказать мне, что лучший способ сделать это? До сих пор я слом много идей, и это то, что я есть сейчас, хотя я не думаю, что я могу сделать это таким образом:C++ ищет строку из файла для определенных слов, а затем вставляя слово после этих слов
#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()'. Это потоковый цикл цикла до конца файла! – Christophe
ok плохое изменение, спасибо – illusiate