我如何读取这些元素并将它们存储到两个不同的数组中,即:<?>
中的数字和[?]
中的单词将被单独读入和存储。
<98>
Avs [adadada]
<45>
[adafaf] BBBHADA
asdadqd aada [Mammoth]
<-1> // ends the read
文件中的其余信息无用,无需存储。
根据其中一个答案的建议,这是我的第一次尝试:
#include <iostream>
#include <sstream>
#include <fstream>
#include <string.h>
using namespace std;
int main(int argc, char* argv[])
{
if(argc != 3)
cout<< "Error! Not enough file!"<<endl;
int** page = new int*[];
char** words = new char*[];
}
//---------------------------------------------------------
void readInput(int** page1, char** name1){
istream is;
char par1, par2;
int usefulVal;
is >> par1 >> usefulVal >> par2;
// check if any input
if(!is) return is;
// check for valid input format
if (par1 != '<' || par2 != '>'){
// set failbit to indicate invalid input format
is.clear(ios_base::failbit);
// assign input values to second argument
page1(usefulVal);
char par_1, par_2;
string string_value;
is >> par1 >> string_value >> par2;
if(!is) return is;
if (par_1 != '[' || par_2 != ']')
{
is.clear(ios_base::failbit);
return is;
}
name1(string_value);
return is;
}
<击> 1。有没有办法分别阅读和存储上述元素? 击>
2.我做错了什么?
P.S。:我只是尝试一些C ++。希望有人能够对此有所了解,谢谢!
答案 0 :(得分:0)
要指定您的格式并只读取特定元素,您可能会重载operator >>
。例如,第一种格式:< int_value >
,可以用以下方式实现:
istream& operator>>(istream& is, class_name& array_name){
char par2, par2;
int int_value;
is >> par1 >> int_value >> par2;
// check if any input
if(!is) return is;
// check for valid input format
if (par1 != '<' || par2 != '>'){
// set failbit to indicate invalid input format
is.clear(ios_base::failbit);
return is;
}
// assign input values to second argument
array_name(int_value);
// chain for consecutive use
return is;
}
和第二种格式:[ string_value ]
:
istream& operator>>(istream& is, class_name& separate_array_name){
char par2, par2;
string string_value;
is >> par1 >> int_value >> par2;
if(!is) return is;
if (par1 != '[' || par2 != ']'){
is.clear(ios_base::failbit);
return is;
}
separate_array_name(string_value);
return is;
}
两个示例中的第二个参数:class_name& array_name
和class_name& separate_array_name
都不是真正的类型,只供您决定/实施。
main()
。main()
或前向声明之前定义。istream
:文件名,模式等。