我需要帮助。我想写问题的打开文件的程序,并且问题阅读问题,文件中的问题以<并以>结束如何用课程做到这一点? 我希望程序在你回答下一个问题之后再提出一个问题。 现在我这样做了: `
int main() {
ifstream myfile;
myfile.open ("21fundamentalvariabletypes.txt");
while (myfile){
int i = 1;
string strInput;
getline(myfile, strInput);
if (strInput == "<") {
cout << i << ".";
i++;
}
if (strInput == ">") {
cout << endl;
}
else {
cout << strInput << endl;
i++;
}
}
return 0;
}
我在屏幕上看到了这个:
1&LT; sta je ispravan nacin deklaracije promenljive? - a = 4; * int a; - int a = 4; - int a = 4
1&LT; Povezati ispravan标准杆? - 1 a a - 2 b b - 3 c d - 4 d a * 1-> 3 * 2-> 3 * 3-> 4 * 4-> 1
为什么我不能使用i ++,为什么我有1.&lt;首次。但是,当我不放if ( strInput == ">" )
等。然后我有1.然后问题
答案 0 :(得分:0)
好吧,如果你想逐个阅读问题,你可以这样做:
int i = 0;
for(; i < line.size(); i++){
if(line[i] == "<") break;
}
bool foundEnd = false;
int j = i + 1;
while(1){
for(; j < line.size(); j++){
if(line[j] == ">"){
foundEnd = true;
break;
}
}
if(!foundEnd) {getline(myfile, line); j = 0;}
else break;
}
return the whole text from i to j
一步一步你可以从i到j连接线并得到你的问题
答案 1 :(得分:0)
为什么要在循环中创建字符串input
和i
?它意味着在每次读取行之后,这些变量将被重置,因此在循环之外声明它们。
在您的情况下,只要问题可能包含多行,您就可以每次只读取一个字符,因此将扫描此字符的每个输入是<
还是>
首先使一个逻辑变量为真,因为问题的标志已经开始,而后者是Xors isBegin
的问题结束的标志。
并提出一系列问题并感受到:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
char c;
bool isBegin = false;
string sQuestion[10];
ifstream in("data.txt");
int i = 0;
while(in >> c) // read character by character
{
if('<' == c) // if so then it's a sign of beginning of question so set the logical variable isBegin to true
{
isBegin = true; // set it to true
continue; // in order not to add '<' to the question
}
else
if('>' == c) // if so it is a sign of end of question
{
isBegin = false; // so set it to false
i++; // move to next quesiton and store it in the next element in the array
}
if(isBegin)
sQuestion[i] += c; // filling the question
}
// checking
for(int i(0); i < 10; i++)
cout << sQuestion[i] << endl;
in.close();
cout << endl;
return 0;
}