如何读取这些元素并将它们存储到两个不同的数组中。,即:<?>
中的数字和[?]
中要分别读入和存储的字。
<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. 我做错了什么?
注:我只是在尝试一些c++。希望有人能指点一下,谢谢!
要指定您的格式和只读特定元素,您可以重载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 ]
with:
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
:文件名,模式等 - 更喜欢简单的函数,即只做一个进程。它更容易实现和检测错误。